Android 6.0 以上权限判断问题

前言

Android 6.0后 加强了权限判断,即使我们再清单文件中添加了权限授权,在使用的时候如果没有进行权限判断依然无法使用该权限。

从官方提供的下图分析,Android 大部分用户已经处于Android 6.0,所以Android 的权限判断,对于应用开发是必不可免的。


Android 6.0 以上权限判断问题_第1张图片
image.png

解决办法

在用户在使用该权限的时候我们给用户提示一个弹框进行权限授权,效果如下图。


Android 6.0 以上权限判断问题_第2张图片
image.png

弹框是系统提供的,我们在使用权限时进行代码判断就好了
例如使用读取通讯录权限

//判断应用是否已经授权权限
public boolean requestMail(Activity activity) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            int hasPermission = activity.checkSelfPermission(Manifest.permission.READ_CONTACTS);
           //没有授权
            if (hasPermission != PackageManager.PERMISSION_GRANTED) {
                //进行授权提示 1006为返回标识
                activity.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_CONTACTS},
                        1006);
                return false;
            }
        }
        return true;
    }

//授权回调
 @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        //1006是通讯录授权
        if (requestCode == 1006) {
               //跳转通讯录
            SwitchActivityManager.startInvitationActivity(mContext);
        }

    }

 

使用

               //权限判断,弹窗
                if (requestMail(InvationWeixinActivity.this)) {
                    SwitchActivityManager.startInvitationActivity(mContext);
                }

大概代码逻辑就是这样,根据自己的项目需求进行判断。

你可能感兴趣的:(Android 6.0 以上权限判断问题)