现在android6.0+采用了动态权限,但是如果是低于这个版本呢?特别是国内rom,老早就有了权限管理。这个时候,如果是android4.4+可以采用AppOpsManager。如果比这个版本还低的,那我也暂时没有什么比较好的解决方案。
AppOpsManager的用法大致如下:
public static final int MODE_ALLOWED = 0;
public static final int MODE_IGNORED = 1;
public static final int MODE_ERRORED = 2;
public static final int MODE_DEFAULT = 3;
/**
* 判断权限
* 本方法仅适用于api>=19 && api<23
* @param context
* @param op {@link AppOpsManager}
* @return
*/
@RequiresApi(api = VERSION_CODES.KITKAT)
public static int checkOp(Context context, String op) {
try {
AppOpsManager manager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
return manager.checkOp(op, Binder.getCallingUid(), context.getPackageName());
} catch (Exception e) {
Logger.w(TAG, e);
}
return MODE_DEFAULT;
}