public static void requestSinglePermissions()

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();
        }
    }