@TargetApi(M) private boolean hasStoragePermission() { if (SDK_INT < M) { return true; } // Once true, this won't change for the life of the process so we can cache it. if (writeExternalStorageGranted) { return true; } writeExternalStorageGranted = context.checkSelfPermission(WRITE_EXTERNAL_STORAGE) == PERMISSION_GRANTED; return writeExternalStorageGranted; }
/** * Not that needed method but if we override others it is good to keep same. */ public static boolean checkPermission(String permissionName) { if (context == null) { throw new RuntimeException("Before comparing permissions you need to call Nammu.init(context)"); } return PackageManager.PERMISSION_GRANTED == context.checkSelfPermission(permissionName); } }
/** * Not that needed method but if we override others it is good to keep same. */ public static boolean checkPermission(String permissionName) { if (context == null) { throw new RuntimeException("Before comparing permissions you need to call Nammu.initCatchException(context)"); } return PackageManager.PERMISSION_GRANTED == context.checkSelfPermission(permissionName); } }
@RequiresApi(M) @Override public int checkSelfPermission(String permission) { return mBase.checkSelfPermission(permission); }
/** * Check if explicetly requesting camera permission is required.<br> * It is required in Android Marshmellow and above if "CAMERA" permission is requested in the * manifest.<br> * See <a * href="http://stackoverflow.com/questions/32789027/android-m-camera-intent-permission-bug">StackOverflow * question</a>. */ public static boolean isExplicitCameraPermissionRequired(@NonNull Context context) { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && hasPermissionInManifest(context, "android.permission.CAMERA") && context.checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED; }
@SuppressLint("NewApi") public static boolean checkPermission(Context context, String permission) { boolean result = false; if (Build.VERSION.SDK_INT >= 23) { if (context.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED) { result = true; } } else { PackageManager pm = context.getPackageManager(); if (pm.checkPermission(permission, context.getPackageName()) == PackageManager.PERMISSION_GRANTED) { result = true; } } return result; }
/** * Check if the given picked image URI requires READ_EXTERNAL_STORAGE permissions.<br> * Only relevant for API version 23 and above and not required for all URI's depends on the * implementation of the app that was used for picking the image. So we just test if we can open * the stream or do we get an exception when we try, Android is awesome. * * @param context used to access Android APIs, like content resolve, it is your * activity/fragment/widget. * @param uri the result URI of image pick. * @return true - required permission are not granted, false - either no need for permissions or * they are granted */ public static boolean isReadExternalStoragePermissionsRequired( @NonNull Context context, @NonNull Uri uri) { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED && isUriRequiresPermissions(context, uri); }
if (context.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED) { permissionsGranted.add(permission);
if (context.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED) { permissionsGranted.add(permission);
private static void assertPermission(final Context context, final String permission, final boolean granted) throws NameNotFoundException { final int state = granted ? PERMISSION_GRANTED : PERMISSION_DENIED; assertEquals(state, context.checkPermission(permission, Process.myPid(), Process.myUid())); if (SDK_INT >= M) assertEquals(state, context.checkSelfPermission(permission)); final PackageInfo pkg_info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_PERMISSIONS); if (! granted) return; assertNotNull(pkg_info.requestedPermissions); for (int i = 0; i < pkg_info.requestedPermissions.length; i++) if (permission.equals(pkg_info.requestedPermissions[i])) { assertEquals("Not granted: " + permission, PackageInfo.REQUESTED_PERMISSION_GRANTED, pkg_info.requestedPermissionsFlags[i]); return; } fail(permission + " is not in requested permissions: " + Arrays.deepToString(pkg_info.requestedPermissions)); }
private boolean permissionDenied() { if (Build.VERSION.SDK_INT >= 23) { String[] permissions = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; for (String str : permissions) { if (mContext.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) { return true; } } } return false; }
public static boolean checkContactPermission(Context context) { return Build.VERSION.SDK_INT < Build.VERSION_CODES.M || context.checkSelfPermission(Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED; }
@RequiresApi(M) @Override public int checkSelfPermission(String permission) { return mBase.checkSelfPermission(permission); }
/** * Check if explicetly requesting camera permission is required.<br> * It is required in Android Marshmellow and above if "CAMERA" permission is requested in the * manifest.<br> * See <a * href="http://stackoverflow.com/questions/32789027/android-m-camera-intent-permission-bug">StackOverflow * question</a>. */ public static boolean isExplicitCameraPermissionRequired(@NonNull Context context) { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && hasPermissionInManifest(context, "android.permission.CAMERA") && context.checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED; }
/** * Check if the given picked image URI requires READ_EXTERNAL_STORAGE permissions.<br> * Only relevant for API version 23 and above and not required for all URI's depends on the * implementation of the app that was used for picking the image. So we just test if we can open * the stream or do we get an exception when we try, Android is awesome. * * @param context used to access Android APIs, like content resolve, it is your * activity/fragment/widget. * @param uri the result URI of image pick. * @return true - required permission are not granted, false - either no need for permissions or * they are granted */ public static boolean isReadExternalStoragePermissionsRequired( @NonNull Context context, @NonNull Uri uri) { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED && isUriRequiresPermissions(context, uri); }
/** * 调用系统打电话界面 * * @param context 上下文 * @param phoneNumber 手机号码 */ @TargetApi(Build.VERSION_CODES.M) public static void callPhones(Context context, String phoneNumber) { if (phoneNumber == null || phoneNumber.length() < 1) { return; } Uri uri = Uri.parse("tel:" + phoneNumber); Intent intent = new Intent(Intent.ACTION_CALL, uri); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (context.checkSelfPermission(Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // Activity#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for Activity#requestPermissions for more details. return; } context.startActivity(intent); }
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (context.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && context.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { LogUtils.e(TAG, "location failure."); listener.onFailure("location failure.", null);
private static void assertPermission(final Context context, final String permission, final boolean granted) { final int state = granted ? PERMISSION_GRANTED : PERMISSION_DENIED; assertEquals(state, context.checkPermission(permission, Process.myPid(), Process.myUid())); if (SDK_INT >= M) assertEquals(state, context.checkSelfPermission(permission)); }
@Override public boolean checkPermission(Context context) { return !(Build.VERSION.SDK_INT >= 23 && context.checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED); }
public static Boolean checkPremission(Context context,String permission){ boolean result = false; if (getTargetSdkVersion(context) >= Build.VERSION_CODES.M && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { result = context.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED; } else { result = PermissionChecker.checkSelfPermission(context, permission) == PermissionChecker.PERMISSION_GRANTED; } return result; }