V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yuann72
V2EX  ›  问与答

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

  •  
  •   yuann72 · 2019-09-07 20:26:03 +08:00 · 2172 次点击
    这是一个创建于 1897 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    7 条回复    2019-09-08 08:53:54 +08:00
    ysc3839
        1
    ysc3839  
       2019-09-07 21:21:18 +08:00 via Android
    建议看 Android 官方文档或者官方示例代码,你说的方法可能是兼容性考虑,也许在新版本中就失效了。
    HongJay
        2
    HongJay  
       2019-09-07 23:54:35 +08:00
    是的。我记得这个权限只需要系统处理
    shingle
        3
    shingle  
       2019-09-08 00:22:15 +08:00 via Android
    在安装时系统会有提示弹出,内容是死的。你说的那一套逻辑也有必要,用来告诉用户开启才能安装 /更新应用
    mxalbert1996
        4
    mxalbert1996  
       2019-09-08 00:53:41 +08:00 via Android
    这种行为很多时候是跟 Target API Version 相关的,我猜你的 Target API Version 小于 26 ?
    yuann72
        5
    yuann72  
    OP
       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
        6
    yuann72  
    OP
       2019-09-08 08:51:17 +08:00
    @HongJay #2
    @shingle #3 系统有自动弹出就行,内容是死的没关系。在判断到有新版本可更新时,会有弹窗提示用户,用户确认后才开始下载新版 apk。在那个弹窗告诉用户就行,或者加个 toast 提示下。我现在想的是能少写几行代码就少写几行,这样才能少出点 bug
    yuann72
        7
    yuann72  
    OP
       2019-09-08 08:53:54 +08:00
    @ysc3839 #1 恩,确实要跟官方文档,不然也不用急急忙忙来处理这种兼容问题了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2638 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:27 · PVG 18:27 · LAX 02:27 · JFK 05:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.