美文网首页
安卓10定位权限问题

安卓10定位权限问题

作者: 不会弹钢琴de大叔 | 来源:发表于2021-03-18 16:45 被阅读0次

    由于项目中使用了定位权限(如果你需要后台定位,可以看看此文章,如果不需要后台定位,但是出现了这种情况,那么你将ACCESS_BACKGROUND_LOCATION权限去除不申请即可),然后在安卓10以上的机器发现选择了 仅在使用期间允许 后,代码中也是出现了拒绝权限的回调,
    之前没有时间研究,最近有时间研究了一下,需要对需要的人有所帮助。

    话不多说直接上代码

    以下代码是用来判断是否有当前权限的(包括了选择仅在使用中这种情况)

    private boolean checkHasPermission(List<String> mPermissions) {
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
                // DANGER ZONE!!! Changing this will break the library.
                return true;
            }
            //是否是定位权限判断
            boolean isLocation = false;
            int failCount = 0;
            for (String perm : mPermissions) {
                if (Manifest.permission.ACCESS_BACKGROUND_LOCATION.equals(perm)) {
                    isLocation = true;
                }
                if (ContextCompat.checkSelfPermission(this, perm) != PackageManager.PERMISSION_GRANTED) {
                    ++failCount;
                }
            }
            if (isLocation) {
                //定位权限的判断
                //当点击仅在使用中允许 或 全部允许 失败数量为1  ,  0 但是这两种是都可以成功定位的
                return failCount <= 1;
            } else {
                //没有安卓10的定位权限
                return failCount == 0;
            }
        }
    
    

    接下来在初次使用的时候,也会出现权限拒绝的情况,那么可以在onRequestPermissionsResult方法中使用以下代码

            if (perms.size() == 1 && perms.contains(Manifest.permission.ACCESS_BACKGROUND_LOCATION)) {
                //这个就是认为有定位权限了,当然如果你需要后台定位这个需要你继续提示用户
            } else {
                //还是没有权限,需要提示用户开启权限
            }
    

    经过以上两步就可以实现安卓10定位权限的问题了!
    希望对你有所帮助谢谢!

    相关文章

      网友评论

          本文标题:安卓10定位权限问题

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