作为一个app,target是固定的一个,不用担心是否使用动态权限。但是作为一个sdk可就不那么明朗了,sdk提供给开发者使用,开发者根据自己的应用选择target,sdk就要考虑适配和兼容,那么接下来这里就给出下适配23以上和以下的权限代码,使用反射就可以了,但是注意权限不要使用v4里面的ActivityCompat,因为你不知道开发者是否使用了v4包,也不知道v4包的版本不同对该类是否有影响,所以这里我选择使用Activity里面的现有的权限检查,Activity里面有权限检查也是在target为23的Activity里,因此做下版本判断即可,不然就反射不到喽~
检查权限和请求权限代码,使用Activity自身的方法
检查权限和请求权限的代码,Activity的此方法只在target>=23的时候有
//检查权限
activity.checkSelfPermission(permission);
//请求权限
activity.requestPermissions(permissions,requestCode);
检查权限方法反射
public static int checkSelfPermission_self(Activity activity,String permission){
Log.d(TAG," checkSelfPermission_self start ");
if (Build.VERSION.SDK_INT > 22) {
Class clazz = null;
try {
// activity.checkSelfPermission(permission);
// clazz = Class.forName(activity.getClass().getCanonicalName());
ClassLoader classLoader =