Ich habe Probleme mit der Implementierung von Laufzeitberechtigungen. Ich ging Link unten durch für die Laufzeitberechtigungen Implementierung.requestPermissions() funktioniert nicht für Manifest.permission.MODIFY_PHONE_STATE in API 23
https://developer.android.com/training/permissions/requesting.html
ich vor Problem für android.permission.MODIFY_PHONE_STATE“nur ich habe den Code unten für CAMERA Erlaubnis getestet und Code funktioniert gut für die Kamera Erlaubnis
.Problem ich bin vor:
- shouldShowRequestPermissionRationale() zurückkehrt falsch
- requestPermissions() nicht pe Gewährung Entscheidung.
Grad Details: compileSdkVersion 23, buildToolsVersion "23.0.3", targetSdkVersion 23
Manifest Details: Ich habe die folgende Erlaubnis hinzugefügt
verwendet Zulassungs android: name = "android.permission. MODIFY_PHONE_STATE“
private static final int PERMISSIONS_REQUEST_CODE = 123;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int granted = PackageManager.PERMISSION_GRANTED;
int result = ContextCompat.checkSelfPermission(ActivityMain.this,Manifest.permission.MODIFY_PHONE_STATE);
if (result == granted) {
Toast.makeText(ActivityMain.this,"permissions granted",Toast.LENGTH_LONG).show();
}
if (result != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(ActivityMain.this, "permissions denied", Toast.LENGTH_LONG).show();
boolean res = ActivityCompat.shouldShowRequestPermissionRationale(ActivityMain.this,Manifest.permission.MODIFY_PHONE_STATE);
// returning false
if (res) {
new AlertDialog.Builder(ActivityMain.this)
.setMessage("Allow")
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ActivityCompat.requestPermissions(ActivityMain.this,
new String[]{Manifest.permission.MODIFY_PHONE_STATE},
PERMISSIONS_REQUEST_CODE);
}
}).setNegativeButton(android.R.string.cancel, null).show();
} else {
ActivityCompat.requestPermissions(ActivityMain.this,
new String[]{Manifest.permission.MODIFY_PHONE_STATE},
PERMISSIONS_REQUEST_CODE);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults) {
switch (requestCode) {
case PERMISSIONS_REQUEST_CODE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(ActivityMain.this,"permissions granted",Toast.LENGTH_LONG).show();
} else {
Toast.makeText(ActivityMain.this,"permissions not granted",Toast.LENGTH_LONG).show();
}
return;
}
}
}
Aber unter API 23 können wir diese Erlaubnis verwenden, indem Sie einfach in unserer Manifest-Datei so erklären, warum Android uns nicht erlaubt, in API 23 –
In AndroidManifest zu verwenden. Wenn Sie diese Berechtigung deklarieren, können Sie die Fehlermeldung dazu anzeigen. Es wird beschrieben, dass Sie nicht auf diese Erlaubnis und weitere Details zugreifen können Überprüfen Sie diese [link] (https://developer.android.com/reference/android/Manifest.permission.html#MODIFY_PHONE_STATE) erwähnt, ** Nicht zur Verwendung durch Anwendungen von Drittanbietern **. – Sujewan
Ja, Sie haben Recht. –