动态权限申请库

https://github.com/permissions-dispatcher/PermissionsDispatcher
动态权限申请的库,还专门适配xiaomi。star 6000q多。
问题:
1.选中不再询问,拒绝权限后。无法再申请权限,只有重装。
2.代码写法繁琐,需要自己封装简化,后续再补充。

国产手机5.0权限,也需要申请的问题:
由于这些机制是自己实现的,没有套路。遇到不同的机型,专门适配。

如:魅蓝5.1,录制屏幕。需要向手机申请camera权限。但是使用6.0的权限检测不起作用,只有另辟蹊径。
/**

  • 适配魅族5.0的录屏问题
    */

public class MeiZuPermissionUtil {
public static void checkMeizuCameraPermission(Context context) {
final int version = Build.VERSION.SDK_INT;
final String phoneName=getDeviceBrand();
if (version >= 19 && version<23 && "Meizu".equals(phoneName)) {
if(!cameraIsCanUse()){
TipToast.shortTip("魅族手机必须打开拍照和录像权限");
applyPermission(context);
}
}

}
private static boolean cameraIsCanUse() {
    boolean isCanUse = true;
    Camera mCamera = null;
    try {
        mCamera = Camera.open();
        Camera.Parameters mParameters = mCamera.getParameters(); //针对魅族手机
        mCamera.setParameters(mParameters);
    } catch (Exception e) {
        isCanUse = false;
    }

    if (mCamera != null) {
        try {
            mCamera.release();
        } catch (Exception e) {
            e.printStackTrace();
            return isCanUse;
        }
    }
    return isCanUse;
}

/**
 * 去魅族权限申请页面
 */
private static void applyPermission(Context context){
    Intent intent = new Intent("com.meizu.safe.security.SHOW_APPSEC");
    intent.setClassName("com.meizu.safe", "com.meizu.safe.security.AppSecActivity");
    intent.putExtra("packageName", context.getPackageName());
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent);
}
/**
 * 获取手机厂商
 *
 * @return  手机厂商
 */
public static String getDeviceBrand() {
    return android.os.Build.BRAND;
}

}

你可能感兴趣的:(动态权限申请库)