美文网首页
动态权限1

动态权限1

作者: 禄子_c79b | 来源:发表于2019-08-16 20:45 被阅读0次
<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);

    }

下一篇升级版

相关文章

  • 动态权限1

    要打开的所有权限:public static String[]permissionsREAD={Manifest....

  • 悬浮窗权限

    权限 1、注册权限 2、动态申请权限 API19以后需要动态申请权限,API23以前默认是开放的,但是个别厂商自己...

  • Android6.0 动态权限详解及动态申请权限

    1、动态权限获取机制 Google在Android 6.0中引入了动态权限获取机制(Runtime Permiss...

  • 第二十五周 动态权限

    话题:动态权限 描述下 Android 的动态权限:这些权限的分类是什么?哪些权限必须要动态申请?请给出权限申请的...

  • targetSdkVersion升级为26之后的适配

    1、权限的动态申请这个是targetSdkVersion为23时,对于一些比较危险的权限,需要动态申请,网上很多资...

  • android6.0动态权限与封装

    1. 目标 此文章的最终目标:让童鞋们了解6.0动态权限的逻辑,以及学会封装动态权限申请,实现'一句话申请权限'。...

  • Android动态权限简单封装

    1. 目标 此文章的最终目标:让童鞋们了解6.0动态权限的逻辑,以及学会封装动态权限申请,实现'一句话申请权限'。...

  • Android6.0 动态权限 笔录

    导航: Android6.0 动态权限申请程序 普通权限与动态权限 完整代码 在Android6.0中,系统权限被...

  • Android基础(30)动态权限、安全

    1)动态权限适配方案,权限组的概念 2)权限管理系统(底层的权限是如何进行 grant 的)?http://www...

  • Android 6.0动态权限

    动态权限分为两类 1.不涉及隐私的权限 需要在Manifest中声明 网络权限 蓝牙权限 NFC权限等 2.涉及隐...

网友评论

      本文标题:动态权限1

      本文链接:https://www.haomeiwen.com/subject/yxccsctx.html