安装下载的apk

时间:2018-03-11 15:22:09

标签: android permissions kotlin apk

Android 6.0.1(API 23)

尝试将autoupdate添加到我的应用中并获得奇怪的信息:

  1. 将文件下载到

    val fileDownloaded = File(context.filesDir, "update.apk")
    
  2. 然后尝试安装带有意图的apk

    val intent = Intent(Intent.ACTION_VIEW, fileUri)
    intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true)
    intent.setDataAndType(fileUri, "application/vnd.android.package-archive")
    intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or 
            Intent.FLAG_ACTIVITY_NEW_TASK
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
            startActivity(intent)
    
  3. 显示权限

     android.permission.INTERNET
     android.permission.WRITE_EXTERNAL_STORAGE
     android.permission.READ_EXTERNAL_STORAGE
     android.permission.REQUEST_INSTALL_PACKAGES
    
  4. 出现错误"解析包时出现问题"和logcat消息:

  5. 无法打开' /data/user/0/com.testapp.android.demo/files/update.apk':权限被拒绝 03-11 12:52:18.815 3330-3330 / com.android.packageinstaller W / zipro:打开存档时出错/data/user/0/com.testapp.android.demo/files/update.apk:I / O错误 03-11 12:52:18.815 3330-3330 / com.android.packageinstaller D / asset:无法打开Zip存档' /data/user/0/com.testapp.android.demo/files/update.apk& #39; 03-11 12:52:18.815 3330-3330 / com.android.packageinstaller W / PackageInstaller:解析清单时解析错误。停止安装

    无法获得我必须拥有的权限......

    在Android API> = 24上,通过FileProvider,一切正常。问题仅出在api

    较低的设备上

    任何人都可以告诉我什么是错的以及如何解决它。

1 个答案:

答案 0 :(得分:1)

您正在传递File指向internal storage。第三方应用程序(例如程序包安装程序)无权访问此位置。在较旧的设备上将APK下载到external storage