【发布时间】:2017-07-03 16:08:06
【问题描述】:
我正在从网上下载 apk 文件并将他存储到 Context.getCacheDir() 中。我正在通过 HttpURLConnection 下载文件 - 我实际上并没有询问代码(它完全正常工作),所以我没有在这里发布它。我成功启动下载。文件被下载到缓存中,然后提示安装-但系统无法打开我的APK并写入分析错误。
因此问题如下:
03-31 16:48:43.740: INFO/ActivityManager(59): Start proc com.android.packageinstaller for activity com.android.packageinstaller/.PackageInstallerActivity: pid=620 uid=10026 gids={}
03-31 16:48:44.749: WARN/zipro(620): Unable to open zip '/data/data/com.my.app/cache/myApp.apk': Permission denied
03-31 16:48:44.749: DEBUG/asset(620): failed to open Zip archive '/data/data/com.my.app/cache/myApp.apk'
03-31 16:48:44.930: WARN/PackageParser(620): Unable to read AndroidManifest.xml of /data/data/com.my.app/cache/myApp.apk
03-31 16:48:44.930: WARN/PackageParser(620): java.io.FileNotFoundException: AndroidManifest.xml
问题是 - 我没有权限以编程方式访问 /cache。有什么办法可以解决吗?我不想使用外部存储作为下载目录(当我将文件下载到外部存储时安装过程有效),缓存很棒,因为一般用户无法从文件管理器访问该文件,这就是我想要的。感谢您的想法。
这个问题已经困扰我一个多月了...
编辑:仍然没有解决方案,我试图认为我找到了第一件事,这在 Android 上是不可能的
Edit2:我一定看起来很糟糕 - 我下载的 apk 存在于缓存中...仍然没有允许从该目录安装的权限?
【问题讨论】:
-
您是否尝试过使用
openFileOutput()....如果没有,请尝试使用MODE_WORLD_READABLE -
您好,您找到上述问题的解决方案了吗?我现在也处于类似的状态。
-
我已经看到
WORLD_WRITABLE在这条评论的几乎每个答案中都提出了建议。做 NOT 做那件事不是为了测试权限是问题。
标签: android