Ich habe Probleme mit der Handhabung von Laufzeitberechtigungen in Android Marshmallow und ich brauche wirklich eine Hand. Das Problem ist, wenn ich eine Laufzeitberechtigung verweigere (wenn das Dialogfeld erscheint), stürzt die App ab. Genauer gesagt, die Aktivität, die ich gerade aktiviere, wird neu gestartet (ich nenne es einfach einen App-Crash?). HierDenying Runtime Permission in Android Marshmallow Crashs App
ist der Code:
public void showContacts() {
if (CommonData.showLogs) {
Log.d(debugTag, "Show contacts button pressed. Checking permissions.");
}
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
requestContactsPermissions();
} else {
if (CommonData.showLogs) {
Log.d(debugTag, "Contact permissions have already been granted. Displaying contact details.");
}
// Do my Stuff
}
}
private void requestContactsPermissions() {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.READ_CONTACTS)
|| ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.WRITE_CONTACTS)) {
Snackbar.make(rLParent, R.string.permission_contacts_rationale,
Snackbar.LENGTH_INDEFINITE)
.setAction(R.string.ok, new View.OnClickListener() {
@Override
public void onClick(View view) {
ActivityCompat
.requestPermissions(ImportContactsActivity.this, PERMISSIONS_CONTACT,
REQUEST_CONTACTS);
}
})
.show();
} else {
ActivityCompat.requestPermissions(ImportContactsActivity.this, PERMISSIONS_CONTACT, REQUEST_CONTACTS);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == REQUEST_CONTACTS) {
if (PermissionUtil.verifyPermissions(grantResults)) {
// Do my Stuff
} else {
Snackbar.make(rLParent, R.string.permissions_not_granted,
Snackbar.LENGTH_SHORT)
.show();
}
} else {
Log.d(debugTag, "Contacts permissions were NOT granted.");
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
Was mache ich falsch hier? Jede Hilfe würde sehr geschätzt werden. Vielen Dank!
Bitte senden Sie Ihren LogCat-Absturzbericht - Es ist einfacher, das Problem auf diese Weise zu identifizieren –
Es gibt keinen Logcat-Absturzbericht Sir. Es wird nur die Aktivität sofort neu starten. –
ja, das ist eine unbehandelte Ausnahme. Normalerweise versucht Android, die Aktivität sofort nach einem Absturz zu starten ... In der Bereitstellung würde ich vorschlagen, dass Sie einige Absturzberichterstattungsmechanismen wie Crashlytics verwenden, um Abstürze auf Benutzergeräten zu behandeln – Kushan