PackageManager#installPackage在Android N上无法正常工作。

5
使用构建工具版本24和带有N映像(npd56n)的Android设备时,我无法使用PackageManager#installPackage安装软件包。
当将具有“file:”方案的URI传递给该方法时,返回-3,我认为这是INSTALL_FAILED_INVALID_URI
当使用FileProvider创建的URI(“content:”方案)传递给该方法时,会抛出异常:
Caused by: java.lang.UnsupportedOperationException: Only file:// URIs are supported                                                                    

任何想法?

1
FileProvider方法对我来说很有效,使用ACTION_INSTALL_PACKAGE从NDP4开始。更多信息请参见此问题 - CommonsWare
1
@CommonsWare,Android N的PackageManager源代码似乎仍然明确禁止非file:// URI。FileProvider提供了content:// URI。也许您是指通过Intent而不是通过(反射)调用PackageManager.installPackage进行安装? - user937783
@manyobject:哦,我一直以为installPackage()只是调用安装程序activity的方便包装器。是的,我正在测试ACTION_INSTALL_PACKAGE - CommonsWare
2
@mrtowel,我强烈怀疑在你的情况下,-3的返回值是因为PackageManager没有权限读取你尝试安装的文件。Android N中的更改意味着文件权限更加严格,具体来说,File#setReadable(true, false)不再足以使应用程序私有存储中的文件对其他应用程序可读,而MODE_WORLD_READABLE将抛出异常。 - user937783
1个回答

0

PackageManager中的installPackage已在N版本中停用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接