Ich habe viele Beiträge gelesen und viele Lösungen ausprobiert, aber der gemeinsame Punkt aller Beiträge war, dass sie alle veraltet waren und ich zumindest keine Lösung finden konnte, die auf neueren Versionen von Android funktioniert.
Beitrag 1 , Ergebnis: Gibt
intent.getExtras().getInt("simId", -1)
immer -1 zurück
Beitrag 2 , Ergebnis: Gibt intent.getExtras().getInt("slot", -1)
immer -1 zurück
Beitrag 3 , Ergebnis:
String[] array = new String[]{
"extra_asus_dial_use_dualsim",
"com.android.phone.extra.slot",
"slot",
"simslot",
"sim_slot",
"subscription",
"Subscription",
"phone",
"com.android.phone.DialingMode",
"simSlot",
"slot_id",
"simId",
"simnum",
"phone_type",
"slotId",
"slotIdx"
};
for (String item :
array) {
Log.i(TAG, "Sim Card - " + item + " -----> " + intent.getExtras().getInt(item));
}
Protokolle:
PhoneCallReceiver: Sim Card - extra_asus_dial_use_dualsim -----> 0
PhoneCallReceiver: Sim Card - com.android.phone.extra.slot -----> 0
PhoneCallReceiver: Sim Card - slot -----> 0
PhoneCallReceiver: Sim Card - simslot -----> 0
PhoneCallReceiver: Sim Card - sim_slot -----> 0
PhoneCallReceiver: Sim Card - subscription -----> 0
PhoneCallReceiver: Sim Card - Subscription -----> 0
PhoneCallReceiver: Sim Card - phone -----> 0
PhoneCallReceiver: Sim Card - com.android.phone.DialingMode -----> 0
PhoneCallReceiver: Sim Card - simSlot -----> 0
PhoneCallReceiver: Sim Card - slot_id -----> 0
PhoneCallReceiver: Sim Card - simId -----> 0
PhoneCallReceiver: Sim Card - simnum -----> 0
PhoneCallReceiver: Sim Card - phone_type -----> 0
PhoneCallReceiver: Sim Card - slotId -----> 0
PhoneCallReceiver: Sim Card - slotIdx -----> 0
Es werden dieselben Protokolle mit demselben Wert 0 für die erste SimCard und die zweite SimCard angezeigt.
Ich habe auch andere ähnliche Beiträge ausprobiert. Keiner hat an neuen Versionen von Android gearbeitet!
Gibt es eine andere Lösung, die auf neueren Versionen von Android (7.0 oder höher) funktioniert?
java
android
broadcastreceiver
dual-sim
incoming-call
Alireza Noorali
quelle
quelle
intent.getExtras().getInt("item")
<- Solltest du nichtitem
lieber verwenden als"item"
?"item"
ist in diesem Zusammenhang mit ziemlicher Sicherheit falsch. Versuchen Sie, wie gesagt, zu drucken, was Sie haben, anstatt was Sie erwarten. Obwohl diese ganze Lösung wie ein Hack aussieht, funktioniert jeder verwendbare Schlüssel, den Sie finden, auf einigen Geräten möglicherweise immer noch nicht.Antworten:
Offiziell ist der einzige dokumentierte Wert, den die Absicht liefert, die Telefonnummer.
Einige Konstruktoren fügen der Absicht andere Werte wie die Sim-Slot-Nummer hinzu, dies ist jedoch nicht obligatorisch. Aus diesem Grund sind so viele Slot-Keys-Namen möglich, wie in Post 3 dargestellt , wobei jeder Konstruktor seine eigene Implementierung hinzufügt.
Es ist auch möglich, dass ein Konstruktor diesen Wert in einigen Modellen nicht hinzugefügt hat, und dies ist sicherlich bei Ihrem Modell der Fall. Es gibt keine Möglichkeit, diesen Wert zu finden, wenn der Konstruktor ihn nicht liefert.
quelle
Wenn Sie dies getan haben, sollte es funktionieren. Stellen Sie sicher, dass Ihr Testgerät unter Android 5.1 oder höher ausgeführt wird. Dual-Sim-Unterstützung wurde in Version 5.1 hinzugefügt ( hier überprüfen )
Stellen Sie sicher, dass Sie die folgende Berechtigung im Manifest hinzugefügt haben
HINWEIS :
Diese Werte müssen nicht immer kommen. Unterstützung durch Netzwerkanbieter ist erforderlich. Bitte lesen Sie die Dokumentation hier
quelle
READ_PHONE_STATE
Erlaubnis hinzugefügt , aber ich bekomme immercallingSIM = -1