/** * Checks given permissions are needed to show rationale. * * @return returns true if one of the permission is needed to show rationale. */ static boolean shouldShowRequestPermissionRationale(Activity activity, String... permissions) { for (String permission : permissions) { if (ActivityCompat.shouldShowRequestPermissionRationale(activity, permission)) { return true; } } return false; }
private boolean shouldShowRequestPermissionRationale() { return ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE); }
/** * @see ActivityCompat#shouldShowRequestPermissionRationale */ boolean shouldShowRequestPermissionRationale(@Nullable Activity activity, @NonNull String permission) { if (activity == null) { return false; } return ActivityCompat.shouldShowRequestPermissionRationale(activity, permission); } }
@TargetApi(Build.VERSION_CODES.JELLY_BEAN) private void requestStoragePermission() { if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_STORAGE); } else { // Eh, prompt anyway ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_STORAGE); } }
public void runWithPermissionsCheck(int requestCode, String permission, Runnable runnable) { if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) { Toast.makeText(this, "please give me the permission", Toast.LENGTH_SHORT).show(); } else { ActivityCompat.requestPermissions(this, new String[]{permission}, requestCode); } } else { if (runnable != null) { runnable.run(); } } }
public static void checkPermission(Activity activity,Runnable runnable) { //检查权限(NEED_PERMISSION)是否被授权 PackageManager.PERMISSION_GRANTED表示同意授权 if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { //用户已经拒绝过一次,再次弹出权限申请对话框需要给用户一个解释 if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission .WRITE_EXTERNAL_STORAGE)) { Toast.makeText(activity, "请开通相关权限,否则无法正常使用本应用!", Toast.LENGTH_SHORT).show(); } //申请权限 ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); } else { runnable.run(); // Toast.makeText(activity, "授权成功!", Toast.LENGTH_SHORT).show(); } }
private void requestPermission(final String permission, String rationale, final int requestCode){ if(ActivityCompat.shouldShowRequestPermissionRationale(this, permission)){ new AlertDialog.Builder(this) .setTitle(R.string.mis_permission_dialog_title) .setMessage(rationale) .setPositiveButton(R.string.mis_permission_dialog_ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{permission}, requestCode); } }) .setNegativeButton(R.string.mis_permission_dialog_cancel, null) .create().show(); }else{ ActivityCompat.requestPermissions(this, new String[]{permission}, requestCode); } }
private void requestLocationPermission() { /* * Prompts the user to grant location permissions. This sample app uses the * device's' location to get the current place from the Place Graph SDK, * and to perform local place searches. */ if (ActivityCompat.shouldShowRequestPermissionRationale( this, Manifest.permission.ACCESS_FINE_LOCATION)) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage(R.string.permission_prompt_location); builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { ActivityCompat.requestPermissions( MainActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, REQUEST_LOCATION); } }); builder.create().show(); } else { ActivityCompat.requestPermissions( this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, REQUEST_LOCATION); } }
/** * Handles the requesting of the camera permission. This includes showing a "Snackbar" message * of why the permission is needed then sending the request. */ private void requestCameraPermission() { Log.w(TAG, "Camera permission is not granted. Requesting permission"); final String[] permissions = new String[]{Manifest.permission.CAMERA}; if (!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) { ActivityCompat.requestPermissions(this, permissions, RC_HANDLE_CAMERA_PERM); return; } final Activity thisActivity = this; View.OnClickListener listener = new View.OnClickListener() { @Override public void onClick(View view) { ActivityCompat.requestPermissions(thisActivity, permissions, RC_HANDLE_CAMERA_PERM); } }; Snackbar.make(mGraphicOverlay, R.string.permission_camera_rationale, Snackbar.LENGTH_INDEFINITE) .setAction(R.string.ok, listener) .show(); }
/** * Handles the requesting of the camera permission. This includes * showing a "Snackbar" message of why the permission is needed then * sending the request. */ private void requestCameraPermission() { Log.w(TAG, "Camera permission is not granted. Requesting permission"); final String[] permissions = new String[]{Manifest.permission.CAMERA}; if (!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) { ActivityCompat.requestPermissions(this, permissions, RC_HANDLE_CAMERA_PERM); return; } final Activity thisActivity = this; View.OnClickListener listener = new View.OnClickListener() { @Override public void onClick(View view) { ActivityCompat.requestPermissions(thisActivity, permissions, RC_HANDLE_CAMERA_PERM); } }; Snackbar.make(graphicOverlay, R.string.permission_camera_rationale, Snackbar.LENGTH_INDEFINITE) .setAction(R.string.ok, listener) .show(); }
/** * Handles the requesting of the camera permission. This includes * showing a "Snackbar" message of why the permission is needed then * sending the request. */ private void requestCameraPermission() { Log.w(TAG, "Camera permission is not granted. Requesting permission"); final String[] permissions = new String[]{Manifest.permission.CAMERA}; if (!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) { ActivityCompat.requestPermissions(this, permissions, RC_HANDLE_CAMERA_PERM); return; } final Activity thisActivity = this; View.OnClickListener listener = new View.OnClickListener() { @Override public void onClick(View view) { ActivityCompat.requestPermissions(thisActivity, permissions, RC_HANDLE_CAMERA_PERM); } }; Snackbar.make(mGraphicOverlay, R.string.permission_camera_rationale, Snackbar.LENGTH_INDEFINITE) .setAction(R.string.ok, listener) .show(); }
/** * Handles the requesting of the camera permission. This includes * showing a "Snackbar" message of why the permission is needed then * sending the request. */ private void requestCameraPermission() { Log.w(TAG, "Camera permission is not granted. Requesting permission"); final String[] permissions = new String[]{Manifest.permission.CAMERA}; if (!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) { ActivityCompat.requestPermissions(this, permissions, RC_HANDLE_CAMERA_PERM); return; } final Activity thisActivity = this; View.OnClickListener listener = new View.OnClickListener() { @Override public void onClick(View view) { ActivityCompat.requestPermissions(thisActivity, permissions, RC_HANDLE_CAMERA_PERM); } }; Snackbar.make(mGraphicOverlay, R.string.permission_camera_rationale, Snackbar.LENGTH_INDEFINITE) .setAction(R.string.ok, listener) .show(); }
/** * @return true for there no need to request, do your work it now. * false for do in {@link android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback#onRequestPermissionsResult(int, String[], int[])} */ public static boolean request(final Activity activity, final String permission, String rationale, final int requestCode) { if (!(activity instanceof ActivityCompat.OnRequestPermissionsResultCallback)) { throw new IllegalStateException("The Activity must implement ActivityCompat.OnRequestPermissionsResultCallback"); } if (ActivityCompat.checkSelfPermission(activity, permission) == PackageManager.PERMISSION_GRANTED) { return true; } if (ActivityCompat.shouldShowRequestPermissionRationale(activity, permission)) { new AlertDialog.Builder(activity) .setMessage(rationale) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { requestPermissions(activity, new String[]{permission}, requestCode); } }).setNegativeButton(android.R.string.cancel, null) .show(); } else { return requestPermissions(activity, new String[]{permission}, requestCode); } return false; }
} else if (ActivityCompat.shouldShowRequestPermissionRationale( this, Manifest.permission.CALL_PHONE)) {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(container = new FrameLayout(this)); setTitle("Original"); if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { // Should we show an explanation? if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) { Toast.makeText(this, "Camera access is required.", Toast.LENGTH_SHORT).show(); } else { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSION); } } else { setupCameraPreviewView(); } }
public static boolean nonShowRationale(PermissionWrapper wrapper) { return !ActivityCompat.shouldShowRequestPermissionRationale(getActivity(wrapper), wrapper.getRequestPermission()); }
@Override protected void onResume() { super.onResume(); if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) { mCameraView.start(); } else if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) { ConfirmationDialogFragment .newInstance(R.string.camera_permission_confirmation, new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSION, R.string.camera_permission_not_granted) .show(getSupportFragmentManager(), FRAGMENT_DIALOG); } else { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSION); } }
public static void askForPermission(final Activity activity, final int requestCode, final String permission, @StringRes final int askTitle, @StringRes final int askContent) { if (ActivityCompat.shouldShowRequestPermissionRationale(activity, permission)) { MaterialDialog.Builder builder = new MaterialDialog.Builder(activity) .title(askTitle) .content(askContent) .positiveText(android.R.string.yes) .negativeText(android.R.string.no) .onPositive((dialog, which) -> ActivityCompat.requestPermissions(activity, new String[]{permission}, requestCode)); builder.show(); } else { ActivityCompat.requestPermissions(activity, new String[]{permission}, requestCode); } }
public void requestPermissionOrShowRationale(Permission permission) { if (ActivityCompat.shouldShowRequestPermissionRationale(this, permission.permission)) { PermissionRationaleDialogFragment dialogFragment = PermissionRationaleDialogFragment.newInstance(permission); dialogFragment.show(getSupportFragmentManager(), FRAGMENT_TAG_RATIONALE); } else { requestPermission(permission); } }
@SuppressWarnings("unchecked") void tryRequestWithListener() { PermissionCustomRationaleListener customRationaleListener = getPermissionCustomRationaleListener(); int requestCode = getRequestCode(); if (customRationaleListener != null) { customRationaleListener.permissionCustomRationale(requestCode); } else { String requestPermission = getRequestPermission(); if (ActivityCompat.shouldShowRequestPermissionRationale(activity, requestPermission)) { PermissionRequestListener requestListener = getPermissionRequestListener(); if (requestListener != null) { requestListener.permissionRationale(requestCode); } } ActivityCompat.requestPermissions(activity, new String[]{requestPermission}, requestCode); } }