Warum funktioniert dieser code funktioniert auf android 6 marshmallow-Api-23?
Nicht warum dieser code funktioniert auf android 6 marshmallow-Api-23? Ist es nicht eine Exception werfen, aber der code innerhalb callStateListener funktioniert nicht.
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
PhoneStateListener callStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
//if(logAtive) Log.i(LOG_TAG,incomingNumber + " " + state);
if(state==TelephonyManager.CALL_STATE_RINGING){
Toast.makeText(getApplicationContext(),"Hey, receive your call. Phone is ringing.",
Toast.LENGTH_LONG).show();
}
if(state==TelephonyManager.CALL_STATE_OFFHOOK){
Toast.makeText(getApplicationContext(),"You are in a call. ",
Toast.LENGTH_LONG).show();
}
if(state==TelephonyManager.CALL_STATE_IDLE){
Toast.makeText(getApplicationContext(),"You are in idle state… ",
Toast.LENGTH_LONG).show();
}
}
};
telephonyManager.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);
Berechtigungen:
<uses-feature android:name="android.hardware.telephony" android:required="true" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.PROCESS_INCOMING_CALLS" />
Es arbeitet perfekt in Android 5.1.1 aber nicht in 6-API (Level 23)
vielleicht wegen der neuen Erlaubnis-Modell
Dass code, der nichts tut. Erstellen Sie eine
Android ist nicht android.die Genehmigung.PROCESS_INCOMING_CALLS Berechtigung nun, es verwendet werden, um früher dort sein, überprüfen Sie die Berechtigungen
Dass code, der nichts tut. Erstellen Sie eine
PhoneStateListener
und dann nicht tun nichts mit ihm.Android ist nicht android.die Genehmigung.PROCESS_INCOMING_CALLS Berechtigung nun, es verwendet werden, um früher dort sein, überprüfen Sie die Berechtigungen
InformationsquelleAutor mauriciosouza | 2015-09-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich lief einfach in dieses und es herausgefunden. Es ist, weil Sie sind targeting android SDK 23. Wenn Sie Ihre manifest-Datei für die Ziel-API-22 dann wird es anfangen zu arbeiten, auch bei der Installation und läuft auf einem Marshmallow-Gerät.
Wenn Sie immer noch wollen, um die Ziel-API-23 dann müssen Sie verwenden die neue runtime-Berechtigungs-API, um Erlaubnis bitten, die Nutzung erste, sonst wird es einfach geleugnet werden.
https://developer.android.com/training/permissions/requesting.html
Beste Antwort, danke
InformationsquelleAutor TonyB
Ihnen keine Berechtigungen zum Zugriff auf die
TelephonyManager
(zum BeispielREAD_PHONE_STATE
).Entsprechend der Dokumentation, wenn Sie nicht angefordert haben oder keine Berechtigung erteilt wurde, aber noch immer versucht, darauf zugreifen, wird das Ergebnis leer sein, nicht die Ausnahme, sondern, wie in der Vergangenheit:
Die Sie benötigen, um den Benutzer zu Fragen zu erteilen, die entsprechende Erlaubnis, und behandeln die Fälle, wenn der Benutzer bereits abgelehnt oder widerrufen wurde, die Erlaubnis etc. Es gibt eine detaillierte Beschreibung, wie man den Einsatz dieses hier.
InformationsquelleAutor Ronnie
Beobachtete ich das gleiche Verhalten. Unsere app funktioniert sehr gut auf Lollipop und runter, aber nicht auf Holunder. Es hat nichts zu tun mit Berechtigungen. Eigentlich mit der test-app, die ich schrieb, ging ich einfach in die Einstellungen und gab die Berechtigungen vorher. Das problem in unserer app wurde mit einer Telefon-Nummer selbst, das kam von außen. Wenn Android denkt, dass es nicht gültig ist, wirst du nicht bekommen
onCallStateChanged
rief Marshmallow. Verwenden Sie einfach eine fake-Nummer1234567890,,2#
("ungültig") vs1234567890
("gültig") zu bestätigen. Ich weiß nicht, wie zu "reparieren" die Nummer noch, als Teil der zahlen mit Erweiterungen arbeiten.Edit: bug-report habe ich eröffnet am 16 Dec. 15
InformationsquelleAutor igorepst
Bitte, posten Sie Ihre AndroidManifest, sowie überprüfen Sie die folgenden documeetation:
InformationsquelleAutor Bonatti