我一直在尝试找出如何从内部存储器安装存储的APK,但是我不断遇到错误。
我尝试过getFilesDir()
,但它返回了
08-14 03:18:09.127 10089-10089/? W/zipro: Error opening archive /data/user/0/package_name/files/app-release.apk: I/O Error
08-14 03:18:09.127 10089-10089/? D/asset: failed to open Zip archive '/data/user/0/package_name/files/app-release.apk'
08-14 03:18:09.127 10089-10089/? W/PackageInstaller: Parse error when parsing manifest. Discontinuing installation
我也尝试过Environment.getDownloadCacheDirectory()
,但是得到了类似的结果。
我正在尝试在非root用户的设备上安装,但是我具有签名级应用许可。
如何在非root用户的设备上安装应用程序?
甚至
public void installAPKManual(String filename) {
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(new File(filename));
intent.setDataAndType(uri, "application/vnd.android.package-archive");
startActivity(intent);
}
不起作用。解析错误。
更新
使用后即可使用
file.setReadable(true, false)
获得全世界可读的许可,但是我想知道是否有更好的方法?
答案 0 :(得分:0)
如果您尝试从环境中检索文件,则需要存储权限。
或者如果您尝试从私有存储getCacheDir()
或getFileDir()
获取文件,则不需要权限,但必须使用File Provider。
如果不是这种情况,请尝试先手动安装APK,然后确认APK是否正常!