前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android6.0后权限设置

Android6.0后权限设置

作者头像
longzeqiu
发布2019-08-14 10:11:17
5540
发布2019-08-14 10:11:17
举报
文章被收录于专栏:Android小知识

android6.0之后我们的应用某些权限是动态设置,而非像之前安装之后就提示用户开启哪些权限,但是如果我们没有设置动态授权的话,就会出现界面崩溃的现象,下面我们来讲一下如何像之前一样安装后提示授权,从而避免因未授权而导致的崩溃现象。

  • 第一种方法 将targetSdkVersion设置为23以下。 因为targetSdkVersion>=23时,系统将会自动采用动态权限管理策略,如果你在涉及到特殊权限操作时没有申请权限权限而直接调用了相关代码,你的App可能就崩溃了!
  • 第二种方法(也就是此篇文章说要讲的) 首先你需要在你的清单文件中找出你所注册的权限并将它们依次放到数组中,如下:
代码语言:javascript
复制
    String[] permissions = {Manifest.permission.GET_ACCOUNTS, Manifest.permission.READ_CONTACTS, Manifest.permission.CALL_PHONE, Manifest.permission.CAMERA, Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};

然后调用如下方法依次进行授权即可。

代码语言:javascript
复制
   public void applyPermission() {
        for (int i = 0; i < permissions.length; i++) {
            if (Build.VERSION.SDK_INT >= 23) {
                int check = ContextCompat.checkSelfPermission(this, permissions[i]);
                // 权限是否已经 授权 GRANTED---授权  DINIED---拒绝
                if (check == PackageManager.PERMISSION_GRANTED) {
                } else {
                    requestPermissions(new String[]{Manifest.permission.GET_ACCOUNTS, Manifest.permission.READ_CONTACTS, Manifest.permission.CALL_PHONE, Manifest.permission.CAMERA, Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
                }
            } else {
            }
        }
    }

要记得重写授权的回调

代码语言:javascript
复制
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                           @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
        } else {
            // 没有获取 到权限,从新请求,或者关闭app
            Toast.makeText(this, "没有获取 到权限,从新请求,或者关闭app", Toast.LENGTH_SHORT).show();
        }
    }

以上代码即可实现动态授权,那什么时候调用呢,我是将他们写在BaseActivity中,然后在启动页调用applyPermission();方法即可。 效果图如下:

引用一下高德的启动页

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.11.30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档