Ich weiß, dass wir Telefonstatus per Rundfunkempfänger mit Filter
hören könnenAktion android: name="android.intent.action.PHONE_STATE"
aber dieser Weg erfordert eine Erlaubnis
verwendet-permission android: name="android.permission.READ_PHONE_STATE"
Wie ermittelt man den eingehenden GSM-Anruf ohne diese Erlaubnis?
P.S.
Ich bin mir sicher, dass dies möglicherweise daran liegt, dass Whatsapp es macht.
Wenn ich über die WhatsApp-Audioanrufe spreche und dann eingehende Gsm-Anrufe bekomme - WhatsApp prüft es und setze Selbstanruf auf Pause. Wie verstehen sie, dass Notwendigkeit Pause gesetzt?
Whatsapp hat die Berechtigung READ_PHONE_STATE in der Manifest-Datei, aber ich überprüfe Aufrufe von Android 6 und erteile diese Berechtigung nicht. Diese Berechtigung wurde deaktiviert.
Wenn diese Berechtigung deaktiviert ist, empfängt mein Receiver keine Aktion android.intent.action.PHONE_STATE und PhoneStateListener funktioniert nicht.
Ich habe eine Lösung ohne diese Erlaubnis gefunden.
Zuerst (wenn unser sip call startet) müssen wir den Audiofokus mit dem Liseer anfordern
%Vor%Der afChangeListener kann uns dann sagen, dass jemand den Audiofokus geändert hat und dann können wir den aktuellen Audiokanal überprüfen. Wenn der aktuelle Modus AudioManager.MODE_IN_CALL oder AudioManager.MODE_RINGTONE ist, wissen wir, dass der GSM-Aufruf gestartet wurde.
%Vor%Zuerst verwendete whatsapp die Erlaubnis, die benötigt wurde, um Telefonstatus
zu erhalten %Vor%Hier ist WhatsApp-Menifest-Datei link .
Sie können sehen, dass sie ihre hinzugefügt und darin verwendet haben.
Android selbst bietet die beste Lösung, um es mit Broadcast-Empfänger zu behandeln. Sie sollten diese verwenden, sonst wäre Ihr System hacky.
Folgen Sie diesen Link , um mit der Übertragung zu arbeiten Empfänger, um Telefonanrufe zu erkennen.
Hoffe das hilft dir.
Sie können dies mit onReceive-Methode mit Telefonnummer und allen Details mit eingehenden Anruf erhalten.
Tags und Links android phone-call