从我的android应用程序中,我正在从web下载一个apk,并将其存储在应用程序的私有存储器中(openFileOutput(FILENAME, Context.MODE_PRIVATE))
并试图通过调用这个下载的apk的android包安装程序,intent.setDataAndType(Uri.fromFile(f), "application/vnd.android.package-archive");
startActivity(intent);
但我有个错误说Unable to open zip: /data/data/com.test/files/abc.apk : Permission denied
在Logcat中
而且,Parse Error: There is a problem parsing the package
在电话屏幕上。
是因为apk文件在应用程序的私有存储中,所以android包安装程序无法访问它吗?如果是的话,是否仍然有可能安装apk(当然是在用户允许的情况下),或者我做错了什么?
注:请不要假设电话是根的。
最佳答案
除了mark allisons comment之外,我的猜测是,由于您已将文件保存到具有mode_private的私有存储中,因此只有您的应用程序具有读/写权限。但您正在尝试让包安装程序读取它,这意味着文件必须由外部应用程序访问,因此应该是模式世界可读或模式世界可写。
或者,您可以将其保存到外部存储器中,在默认情况下,它是全局可读的。