找了几篇文章, 比如 https://www.jianshu.com/p/8882af944ad1 都是说先在 AndroidManifest.xml 中加
<users-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
然后在调用 APK 安装时, 先判断是否系统大于 8.0 是否有安装未知源权限 mContext.getPackageManager().canRequestPackageInstalls() , 然后就是 dialog 弹窗提醒用户授权, 然后就 new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES), startActivityForResult 之类的
但是我自己在 Android 8.0 模拟器上运行, 好像只要在 AndroidManifest.xml 加上 android.permission.REQUEST_INSTALL_PACKAGES, 然后直接执行原来的代码直接 new Intent 进行安装 APK, 这时系统会自动弹窗询问用户是否要授权安装未知来源应用权限...就是我上面说的那一套流程
所以我想问下, 是不是我只要在 AndroidManifest.xml 加上 android.permission.REQUEST_INSTALL_PACKAGES, 剩下的交给系统处理, 我不用自己实现那一套弹窗询问用户的流程? 这种做法在 miui 和 emui 等国内 ui 上运行有没有问题(我自己没有安卓 8.0 以上的手机,所以直接来问问)
1
ysc3839 2019-09-07 21:21:18 +08:00 via Android
建议看 Android 官方文档或者官方示例代码,你说的方法可能是兼容性考虑,也许在新版本中就失效了。
|
2
HongJay 2019-09-07 23:54:35 +08:00
是的。我记得这个权限只需要系统处理
|
3
shingle 2019-09-08 00:22:15 +08:00 via Android
在安装时系统会有提示弹出,内容是死的。你说的那一套逻辑也有必要,用来告诉用户开启才能安装 /更新应用
|
4
mxalbert1996 2019-09-08 00:53:41 +08:00 via Android
这种行为很多时候是跟 Target API Version 相关的,我猜你的 Target API Version 小于 26 ?
|
5
yuann72 OP @mxalbert1996 #4 现在 Target API Version 等于 26。现在是遇到了自动更新下载了 apk,但是弹不出安装界面,大概就是之前更新 target api 为 26 后,然后又没有适配 8.0 以上这些特性,没有加 <users-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> 导致的
|
6
yuann72 OP |