पहले
private boolean isPermissionGranted = false;
पर एक बूलियन मान को परिभाषित करें और फिर जाँच अगर अनुमति दी:
if (!isPermissionGranted) {
checkPermission();
}
रन टाइम अनुमति की जांच के लिए
वास्तविक कोड का पालन है:
private void checkPermission() {
int hasPermission = ContextCompat.checkSelfPermission(UserProfile.this, Manifest.permission.CAMERA);
int hasWritePermission = ContextCompat.checkSelfPermission(UserProfile.this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (hasPermission != PackageManager.PERMISSION_GRANTED && hasWritePermission != PackageManager.PERMISSION_GRANTED) {
if (!ActivityCompat.shouldShowRequestPermissionRationale(UserProfile.this, Manifest.permission.CAMERA) && !ActivityCompat.shouldShowRequestPermissionRationale(UserProfile.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
showMessage(getString(R.string.allow_access_to_camera_external_storage),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ActivityCompat.requestPermissions(UserProfile.this, new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_CODE_ASK_PERMISSIONS);
}
});
return;
}
ActivityCompat.requestPermissions(UserProfile.this, new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_CODE_ASK_PERMISSIONS);
return;
} else {
isPermissionGranted = true;
}
}
private void showMessage(String message, DialogInterface.OnClickListener listener) {
new AlertDialog.Builder(UserProfile.this)
.setMessage(message)
.setPositiveButton(R.string.ok, listener)
.setNegativeButton(R.string.cancel, null)
.create()
.show();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_PERMISSIONS:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
isPermissionGranted = true;
} else {
isPermissionGranted = false;
Toast.makeText(UserProfile.this, R.string.permission_denied, Toast.LENGTH_SHORT)
.show();
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
आप उपरोक्त कोड से संदर्भ ले सकते हैं और इसे अपने आवेदन में लागू कर सकते हैं।
क्या कोई अपवाद है ?? यदि हां, तो आपको इसे पकड़ने के लिए प्रयास करें –
इसे जांचें .... http://stackoverflow.com/questions/33488589/android-marshmallow- गतिशील- पारिश्रमिक-change- kills-all-plication-processes – Nikunj
देखा गया मुद्दा, ऐप की वजह से ऐप की वजह से जब हम ऐप को पृष्ठभूमि में चलते हुए गतिशील रूप से अनुमतियों को बदलते हैं, तो संदर्भ जो मैंने साझा प्राथमिकताओं तक पहुंचने के लिए उपयोग किया था, शून्य हो जाता है – ABI