如何在没有SD卡的情况下安装存储在内存中的APK

时间:2018-08-14 03:28:22

标签: android android-install-apk

我一直在尝试找出如何从内部存储器安装存储的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)

获得全世界可读的许可,但是我想知道是否有更好的方法?

1 个答案:

答案 0 :(得分:0)

如果您尝试从环境中检索文件,则需要存储权限。

或者如果您尝试从私有存储getCacheDir()getFileDir()获取文件,则不需要权限,但必须使用File Provider

如果不是这种情况,请尝试先手动安装APK,然后确认APK是否正常!