赞
踩
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锤,一个拥有大佬的小菜鸡。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。