28. RuntimePermissionの実装のTips③
Permissionの要求は、ContextCompatのcheckSelfPermissionではなく
PermissionCheckerのcheckSelfPermissionを使いましょう
AppOpsで権限を剥奪した際の考慮もされているようです
public final class PermissionChecker {
/** Permission result: The permission is granted. */
public static final int PERMISSION_GRANTED = PackageManager.PERMISSION_GRANTED;
/** Permission result: The permission is denied. */
public static final int PERMISSION_DENIED = PackageManager.PERMISSION_DENIED;
/** Permission result: The permission is denied because the app op is not allowed. */
public static final int PERMISSION_DENIED_APP_OP = PackageManager.PERMISSION_DENIED - 1;
@IntDef({PERMISSION_GRANTED,
PERMISSION_DENIED,
PERMISSION_DENIED_APP_OP})
@Retention(RetentionPolicy.SOURCE)
public @interface PermissionResult {}
private PermissionChecker() {
/* do nothing */
}
PermissionChecker.java