Android 6.0后权限的申请

Android  2020年12月8日 pm6:51发布4年前 (2020)更新 91es.com站长
88 0 0

前言

Android 6.0 后,非系统应用权限获取收紧,应用需要动态的申请权限。

你除了AndroidManifest.xml中定义需要的权限,还需要在Java代码中再需要对应权限前提示用户授权

正文

第一步

AndroidManifest.xml

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
第二步
定义需要授权的权限
    //申请需要的所有权限
    private final String REQUEST_MANIFEST_PERMISSION[] = new String[]{
            Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE
    };

PS:REQUEST_MANIFEST_PERMISSION中定义的需要跟AndroidManifest.xml配对,要不然无法申请到权限。

申请权限授权
    public void requestPerssion(Activity activity, int permission_request_code) {
        if (null == activity) {
            Log.d(TAG, "requestPerssion null : ");
            return;
        }
        // Android 6.0后非系统应用需要申请权限
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            ActivityCompat.requestPermissions(activity, REQUEST_MANIFEST_PERMISSION, permission_request_code);
        }

        return;
    }
重写权限状态的回调
    /**
     * @param requestCode  请求时的request code
     * @param permissions  返回的权限的数组
     * @param grantResults 返回对应权限申请状态的数组[-1 申请失败,0申请成功]
     */
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case PERMISSION_REQUEST_CODE:
                if (grantResults != null && permissions != null) {
                    for (int i = 0; i < grantResults.length; i++) {
                        Log.d(TAG, "grantResults[" + i + "]:" + grantResults[i]);
                        Log.d(TAG, "permissions[" + i + "]:" + permissions[i]);
                    }
                }
                break;
        }
    }

权限申请成功状态

    /**
     * Permission check result: this is returned by {@link #checkPermission}
     * if the permission has been granted to the given package.
     */
    public static final int PERMISSION_GRANTED = 0;

    /**
     * Permission check result: this is returned by {@link #checkPermission}
     * if the permission has not been granted to the given package.
     */
    public static final int PERMISSION_DENIED = -1;

参考文章

  1. Android RuntimePermissions运行时权限:批量权限申请

 历史上的今天

  1. 2023: startService()源码分析(0条评论)
  2. 2022: Android多窗口模式简单记录(0条评论)
版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

暂无评论

暂无评论...

随机推荐

wordpress设置固定链接后不能访问

前言我用的是nginx服务器,用的是WordPress博客系统。在wordpress后台固定链接后,导致文章无法访问。记录一下,方便自己查阅。正文找到nginx.conf#每个人的可能不一样/etc/nginx/nginx.conf新增配置,在server{}中server{ ...

Android换肤之Toast和Dialog

前言前面介绍过Android静态换肤日夜模式的切换(原文:《Android静态换肤-日夜主题切换之继承Activity记录 》),从中我们知道,Toast和Dialog存在无法切换成功。原因是Toast或者Dialog是需要时才去初始化的,此时换肤插件没法获取到View。PS:日夜模式不存在...

Bitmap转String进行数据库MySQL保存

前言解析音乐ID3信息时,需要在扫描时把专辑图解析出来,然后保存到数据中。本文就简单介绍一下Bitmap和String之间的转换。PS:20211113日更新指定转换的bitmap指定高宽。好记性不如烂笔头正文这里分为String转Bitmap和bitmap转String来说。隐藏内...

ubuntu 安装apache2, php5, mysql, phpmyadmin后无法访问phpmyadmin问题的解决

在虚拟机中的ubuntu 安装apache2, php5, mysql, phpmyadmin后无法访问phpmyadmin原因apache2配置文件000-default.conf中DocumentRoot默认为/var/www/html/,而在安装phpmyadmin时,没有把phpmyad...

柴静:真实的人性有无尽的可能

1几年前我采访过一个人。他被诬陷嫖妓,证据是卖淫者的供述,他被拘留了42天,放了。校长当不了了,儿子的婚事也吹了“他爹是个大流氓,人还能好么?”他告了十六年,路上带不了两个钱还叫人掏包了,捡人家饭吃。我问他最难受的是什么。“最难忍受就是开党员会的时候我不是党员了”他说。2我们找到了当...

朱自清:冬天

说起冬天,忽然想到豆腐。是一“小洋锅”(铝锅)白煮豆腐,热腾腾的。水滚着,像好些鱼眼睛,一小块一小块豆腐养在里面,嫩而滑,仿佛反穿的白狐大衣。锅在“洋炉子”(煤油不打气炉)上,和炉子都熏得乌黑乌黑,越显出豆腐的白。这是晚上,屋子老了,虽点着“洋灯”,也还是阴暗。围着桌子坐的是父亲跟我们哥儿三个。“洋...