【发布时间】:2021-05-26 09:32:51
【问题描述】:
我们正在从文件 uri 安装 apk,它可以在 Android Pie(9) 上运行,在 Android 10 移动版中它显示 “解析时出现问题”。我们仅将文件存储在应用程序存储中,构建版本为 4.4
我已经分享了下面的代码。
String PATH = Objects.requireNonNull(this.myActivity.getExternalFilesDir(null)).getAbsolutePath();
File file = new File(PATH + "/"+Utils.apk_name);
intent = new Intent("android.intent.action.VIEW");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Uri uri = FileProvider.getUriForFile(this.myActivity, this.myActivity.getApplicationContext().getPackageName() + ".provider", file);
//Intrinsics.checkExpressionValueIsNotNull(uri, "FileProvider.getUriForFi…eProvider.install\", file)");
intent.setDataAndType(uri, "application/vnd.android.package-archive");
startActivity(intent);
清单中的提供者
<provider
android:name="com.kirubha.helpers.ESEProvider"
android:authorities="com.kirubha.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
provider_paths
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="external_storage_root"
path="."/>
</paths>
【问题讨论】:
-
ESEProvider 和 FileProvider 有什么关系?
-
<external-pathfor getExternalFilesDir() 你应该使用<external-files-path。 -
而且...有趣...您仍在使用 Eclipse!
-
ACTION_VIEW已弃用应用安装。 gitlab.com/commonsguy/cw-android-q/-/tree/vFINAL/AppInstaller 展示了如何使用PackageInstaller,这是更长期的解决方案。