动态权限1

2019-08-16  本文已影响0人  禄子_c79b
<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />
加上tools是去掉某个权限 

要打开的所有权限:
public static String[]permissionsREAD={
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.CALL_PHONE,
Manifest.permission.ACCESS_FINE_LOCATION
};

/**
* 丢失权限,进行弹框设置
*/
public void showMissPermissionDialog() {
if (builder == null) {
builder = new AlertDialog.Builder(LoginActivity.this);
builder.setTitle("帮助");
String msg = "当前应用缺少必要权限。
\r请点击"设置"-"权限"-打开所需权限。
\r\r最后点击两次后退按钮,即可返回。";
builder.setMessage(Html.fromHtml(msg));
//materialDialog.setMovementMethod(LinkMovementMethod.getInstance());
builder.setPositiveButton("设置", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
alertDialog.dismiss();
startAppSettings();

            }
        });
        builder.setNegativeButton("退出", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                alertDialog.dismiss();
            }
        });
        alertDialog = builder.create();
        alertDialog.show();
    } else {
        alertDialog.show();
    }
}
// 启动应用的设置
public void startAppSettings() {
    try {
        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
        intent.setData(Uri.parse("package:"+ getPackageName()));
        startActivity(intent);
    } catch (Exception e) {
        e.printStackTrace();
    }
}



/**
 * 判断权限集合
 * permissions 权限数组
 * return true-表示没有改权限 false-表示权限已开启
 */
public static boolean lacksPermissions(Context mContexts) {
    for (String permission : permissionsREAD) {
        if (lacksPermission(mContexts,permission)) {
            return true;
        }
    }
    return false;
}

/**
 * 判断是否缺少权限
 */
private static boolean lacksPermission(Context mContexts, String permission) {
    return ContextCompat.checkSelfPermission(mContexts, permission) ==
            PackageManager.PERMISSION_DENIED;
}

开始调用(这里有个问题,没有检测是否勾选“不再提示”)
if (lacksPermissions(LoginActivity.this)){//读写权限没开启
ActivityCompat.requestPermissions(LoginActivity.this,permissionsREAD,0);
// showMissPermissionDialog();

    }else {
        //读写权限已开启
        mPresenter.getLoginInfo(this);

    }

下一篇升级版

上一篇 下一篇

猜你喜欢

热点阅读