安卓动态权限申请

安卓动态权限申请

在安卓开发中,有些权限我们可以写在Manifest.xml文件中去申请权限,另外有一些权限在安卓6.0之后需要我们在用到这些权限的时候动态的向用户去申请。
具体的分类看这里 :
Android权限申请哪些需要动态申请

我们现在看一下怎么在代码中动态的进行权限申请。

   if(ContextCompat.checkSelfPermission(this, Manifest.permission.${PermissionnName})!=PackageManager.PERMISSION_GRANTED)
        {
            //判断用户是否拒绝过这个权限,提示用户手动去设置中给予我们的APP相关权限
            if(ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.${PermissionnName}))
            {

            }
            else
            {
                //申请这个权限
                ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},MY_PERMISSION_REQUEST_CODE);

            }
        }

上方代码中 ${PermissionnName} 代表想要申请的权限名,按需进行替换即可

然后我们还需要对用户是否给予了APP要求的权限进行监听,在安卓中有一个回调函数可以帮我们做这件事:

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode)
        {
            case MY_PERMISSION_REQUEST_CODE:
            {
                if (grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
                {
                    //用户允许了权限
                }
                else
                {
                    //用户拒绝了权限
                }
                break;
            }
        }
    }

这就是动态权限申请的步骤,配合自己的业务逻辑处理即可。

发布了47 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41525021/article/details/104442352