请教 Android 8.0 以上的应用内升级, 安装未知源应用问题

2019-09-07 20:26:03 +08:00
 yuann72

找了几篇文章, 比如 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 以上的手机,所以直接来问问)

2105 次点击
所在节点    问与答
7 条回复
ysc3839
2019-09-07 21:21:18 +08:00
建议看 Android 官方文档或者官方示例代码,你说的方法可能是兼容性考虑,也许在新版本中就失效了。
HongJay
2019-09-07 23:54:35 +08:00
是的。我记得这个权限只需要系统处理
shingle
2019-09-08 00:22:15 +08:00
在安装时系统会有提示弹出,内容是死的。你说的那一套逻辑也有必要,用来告诉用户开启才能安装 /更新应用
mxalbert1996
2019-09-08 00:53:41 +08:00
这种行为很多时候是跟 Target API Version 相关的,我猜你的 Target API Version 小于 26 ?
yuann72
2019-09-08 08:48:19 +08:00
@mxalbert1996 #4 现在 Target API Version 等于 26。现在是遇到了自动更新下载了 apk,但是弹不出安装界面,大概就是之前更新 target api 为 26 后,然后又没有适配 8.0 以上这些特性,没有加 <users-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> 导致的
yuann72
2019-09-08 08:51:17 +08:00
@HongJay #2
@shingle #3 系统有自动弹出就行,内容是死的没关系。在判断到有新版本可更新时,会有弹窗提示用户,用户确认后才开始下载新版 apk。在那个弹窗告诉用户就行,或者加个 toast 提示下。我现在想的是能少写几行代码就少写几行,这样才能少出点 bug
yuann72
2019-09-08 08:53:54 +08:00
@ysc3839 #1 恩,确实要跟官方文档,不然也不用急急忙忙来处理这种兼容问题了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/598896

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX