Android 마시맬로에서 런타임 권한을 처리하는 데 어려움이 있으며 정말 손이 필요합니다. 문제는 런타임 권한을 거부 할 때 (대화 상자가 표시 될 때) 앱이 충돌합니다. 보다 자세하게, 현재 실행중인 활동이 다시 시작됩니다 (단지 응용 프로그램 충돌이라고 부름).Android 마샬 멜로우에서 런타임 권한 거부 앱
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);
}
}
내가 잘못 여기서 뭐하는 거지 : 여기
코드인가? 도움을 주시면 대단히 감사하겠습니다. 고마워요!
LogCat 충돌 보고서를 게시하십시오 - 문제를 식별하기가 더 쉽습니다. –
Logcat 오류 보고서가 없습니다. 바로 활동을 다시 시작합니다. –
참으로 처리되지 않은 예외입니다. 보통 안드로이드는 크래시 직후에 활동을 시작하려고합니다 ... 배포에서 사용자 장치의 크래시를 처리하기 위해 crashlytics와 같은 충돌보고 메커니즘을 배포 할 것을 제안합니다 – Kushan