Android 监听权限设置界面定位权限开启
  FyeYl0ESQHUh 2023年11月02日 50 0


在 Android 应用中监听权限设置界面定位权限开启,可以通过 ActivityResultLauncher 和 Intent 对象来实现。具体步骤如下:

在 AndroidManifest.xml 文件中添加定位权限声明:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

创建一个 ActivityResultLauncher 对象,并实现 ActivityResultCallback 接口:

ActivityResultLauncher<Intent> permissionSettingLauncher =
    registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
        result -> {
            // 在权限设置界面返回后的回调函数中,检查定位权限是否已被授予
            if (ContextCompat.checkSelfPermission(this,
                    Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
                // 定位权限已被授予
            } else {
                // 定位权限被拒绝
            }
        });

其中,permissionSettingLauncher 是自定义的 ActivityResultLauncher 对象,用于启动权限设置界面并在界面返回后接收结果。

在应用中请求定位权限,可以使用如下代码:

if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
        != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this,
            new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
            REQUEST_LOCATION_PERMISSION);
} else {
    // 定位权限已被授予
}

其中,REQUEST_LOCATION_PERMISSION 是自定义的请求代码,可以用来在权限请求回调函数中判断请求的权限类型。

在定位权限被拒绝时,启动权限设置界面:

if (shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_FINE_LOCATION)) {
    // 用户拒绝了定位权限,但是没有勾选“不再询问”,可以继续请求权限
    ActivityCompat.requestPermissions(this,
            new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
            REQUEST_LOCATION_PERMISSION);
} else {
    // 用户拒绝了定位权限,并勾选了“不再询问”,需要引导用户去设置界面手动开启权限
    Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
    Uri uri = Uri.fromParts("package", getPackageName(), null);
    intent.setData(uri);
    permissionSettingLauncher.launch(intent);
}

其中,shouldShowRequestPermissionRationale() 方法用于判断用户是否勾选了“不再询问”,如果用户没有勾选,则继续请求权限;否则,启动权限设置界面。

在启动权限设置界面后,如果用户在设置界面开启了定位权限,则在回调函数中接收到 RESULT_OK 状态码,否则接收到 RESULT_CANCELED 状态码。根据返回的状态码,可以判断用户是否已经开启了定位权限:

Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
permissionSettingLauncher.launch(intent);

通过上述步骤,就可以在 Android 应用中监听权限设置界面定位权限开启,并在权限开启后获取用户的位置信息。

最后

如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。

如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。

Android 监听权限设置界面定位权限开启_android


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
FyeYl0ESQHUh