in app/src/main/java/org/apache/fineract/utils/CheckSelfPermissionAndRequest.java [120:165]
public static void requestSinglePermissions(final AppCompatActivity activity,
final String[] permissions,
final int permissionRequestCode,
final String messageNeverAskAgain,
final String permissionDeniedStatus) {
//Requesting Permission, first time to the device.
PreferencesHelper preferencesHelper = new PreferencesHelper(activity.
getApplicationContext());
if (preferencesHelper.getBoolean(permissionDeniedStatus, true)) {
preferencesHelper.putBoolean(permissionDeniedStatus, false);
ActivityCompat.requestPermissions(activity, permissions,
permissionRequestCode);
} else {
//Requesting Permission, more the one time and opening the setting to change
// the Permission in App Settings.
new MaterialDialog.Builder().init(activity)
.setMessage(messageNeverAskAgain)
.setNegativeButton(R.string.dialog_action_cancel)
.setPositiveButton(R.string.dialog_action_app_settings,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Making the Intent to grant the permission
Intent intent =
new Intent(Settings
.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts(activity.getResources().getString(
R.string.package_name), activity.getPackageName()
, null);
intent.setData(uri);
PackageManager pm = activity.getPackageManager();
if (intent.resolveActivity(pm) != null) {
activity.startActivityForResult(intent,
ConstantKeys.REQUEST_PERMISSION_SETTING);
} else {
Toast.makeText(activity, activity.getString(
R.string.msg_setting_activity_not_found)
, Toast.LENGTH_LONG).show();
}
}
})
.createMaterialDialog()
.show();
}
}