Ich arbeite daran, die Laufzeitberechtigungen für mein Android-Gerät zu geben. In meinem Fall sollte der Benutzer, sobald er auf die Schaltfläche Anrufen klickt, nach 3 Berechtigungen CALL_PHONE, CAMERA und RECORD_AUDIO fragen. Es fragt nach Berechtigungen, die ich im Protokoll sehen kann, aber nur eine der Berechtigungen wird gewährt. Wieder wenn ich meine App kille und auf Call button klicke, wird nun die zweite Erlaubnis gefragt und nxt mal der Lats. Alle 3 werden nicht gleichzeitig gefragt. Wie ich im Protokoll sehen kann, fragt es und erteilt alle Erlaubnis im ersten Mal nur, aber nur eins wird auf einmal gefragt.Alle Berechtigungen nicht in android Marshmallow erhalten
@JavascriptInterface
public void askPermission(String permission){
Log.d("Ask permission", permission);
switch (permission){
case "audioCall":
askForPermission(Manifest.permission.CALL_PHONE,CALL_PHONE);
askForPermission(Manifest.permission.CAMERA,CAMERA);
askForPermission(Manifest.permission.RECORD_AUDIO,RECORD_AUDIO);
break;
case "videoCall":
askForPermission(Manifest.permission.CALL_PHONE,CALL_PHONE);
askForPermission(Manifest.permission.CAMERA,CAMERA);
askForPermission(Manifest.permission.RECORD_AUDIO,RECORD_AUDIO);
break;
case "writeExternalStorage":
askForPermission(Manifest.permission.CALL_PHONE,CALL_PHONE);
askForPermission(Manifest.permission.CAMERA,CAMERA);
askForPermission(Manifest.permission.RECORD_AUDIO,RECORD_AUDIO);
break;
case "WRITE_EXTERNAL_STORAGE":
askForPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE);
break;
case "GET_ACCOUNTS":
askForPermission(Manifest.permission.GET_ACCOUNTS,GET_ACCOUNTS);
break;
case "READ_CONTACTS":
askForPermission(Manifest.permission.READ_CONTACTS,READ_CONTACTS);
break;
}
}
public void askForPermission(String permission, Integer requestCode){
Log.d("Permissions requested is+", permission);
if (ContextCompat.checkSelfPermission(MainActivity.this, permission) != PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, permission)) {
Log.d("Permission is already granted", ""+permission);
//This is called if user has denied the permission before
//In this case I am just asking the permission again
ActivityCompat.requestPermissions(MainActivity.this, new String[]{permission}, requestCode);
} else {
Log.d("asking for permissions", ""+permission);
ActivityCompat.requestPermissions(MainActivity.this, new String[]{permission}, requestCode);
}
} else {
/* Toast.makeText(this, "" + permission + " is already granted.", Toast.LENGTH_SHORT).show();*/
Log.d("Permission is already granted", ""+permission);
}
}
logs.txt
12-01 15:36:54.911: D/Ask permission(20783): videoCall
12-01 15:36:54.912: D/Permissions requested is+(20783): android.permission.CALL_PHONE
12-01 15:36:54.912: D/Permission is already granted(20783): android.permission.CALL_PHONE
12-01 15:36:54.912: D/Permissions requested is+(20783): android.permission.CAMERA
12-01 15:36:54.913: D/Permission is already granted(20783): android.permission.CAMERA
12-01 15:36:54.921: D/Permissions requested is+(20783): android.permission.RECORD_AUDIO
12-01 15:36:54.923: D/Permission is already granted(20783): android.permission.RECORD_AUDIO
Warum nicht versuchen Sie alle Berechtigungen an einem ActivityCompat.requestPermissions fragen (this, new String [] {Manifest.permission.GET_ACCOUNTS, Manifest.permission.READ_SMS, Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_GET_ACCOUNTS); – Tasneem
'arbeitet daran, dem Android-Gerät die Laufzeitberechtigungen zu geben'. Nein, nicht zu deinem Gerät. Aber zu deiner App. Code, damit der Benutzer Ihrer App Berechtigungen erteilen kann. – greenapps
Check [this] (http://stackoverflow.com/a/40798994/6422096) Link kann Ihnen helfen! –