irpas技术客

android12的一些新权限_刘big锤_android12权限

网络 2819

android12的一些新权限

Android12已经出了有一段时间了,相信很多开发者也都注意到android12的一些新特性了,今天我整理了一些开发上需要注意的事项,供大家参考。(如果有错误的地方请大家指正)

文章目录 android12的一些新权限读取应用列表权限模糊定位功能前台服务启动限制


读取应用列表权限

读取应用列表权限:

在Android 11上在使用PackageManger的方法来获取安装的应用列表,的时候就需要在AndroidManifest.xml文件中进行申请android.permission.QUERY_ALL_PACKAGES此权限了,但是Android12中部分手机还要添加android.permission.GET_INSTALLED_APPS权限才能正常获取到应用列表,权限代码如下:

<uses-permission android:name="android.permission.GET_INSTALLED_APPS"/> <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:ignore="QueryAllPackagesPermission" />

android12虽然不用动态申请这两个权限,但是首次进入应用会弹出如下弹窗: 如果用户拒绝的话还需要提示去系统页面进行授权。 当然,如果大家不是必须获取应用列表而是简单的应用跳转,完全可以用更简单的方法try catch去实现,代码如下:

try { Intent intent = new Intent(Intent.ACTION_MAIN); ComponentName cmp = new ComponentName("应用包名", "该应用的class名称"); intent.addCategory(Intent.CATEGORY_LAUNCHER); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setComponent(cmp); startActivity(intent); } catch (ActivityNotFoundException e) { //todo 提示用户没有该应用,可添加跳转应用商店或浏览器代码 }
模糊定位功能

Android12新增模糊定位功能,用户可以选择让应用只能访问大致位置。

在Android12上,如果你的应用需要获取用户准确的位置信息,那么就需要同时申请准确位置和大概位置两项权限,AndroidManifest.xml文件中的代码如下:

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

注意:此两项权限也都需要动态申请,如果单一申请ACCESS_FINE_LOCATION权限,可能会闪退报错。 执行动态权限申请后会弹出如下弹窗:

那么如果用户只允许了我们使用大致位置权限,但是我们的应用却必须要获取用户精确的位置怎么办呢?我们可以再次申请这两个权限,这时弹窗就会变成这样: 如果此刻用户还不同意,那就可以提示他去设置页面进行授权了。

前台服务启动限制

以 Android 12 为目标平台的应用在后台运行时无法再启动前台服务,但一些特殊情况除外。如果应用在后台运行时尝试启动前台服务,并且前台服务不符合任何特殊情况,则系统会抛出 ForegroundServiceStartNotAllowedException。 但是这并不代表我们无法在后台的service中启动前台服务,Google官方推出了一种新的解决方案WorkManager(大家可通过上方传送门了解一下WorkManager,由于本篇文章旨在介绍新特性,所以解决方案就不在此介绍了,绝对不是因为我不会。)

今天的内容就到这里了,感谢观看

如有错误欢迎大家批评指正指正,欢迎转载分享(原创不易,转载请注明出处)。我是刘big锤,一个拥有大佬的小菜鸡。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #android12权限