以编程方式安装APK.正在安装的APK需要哪些活动?

kam*_*nig 2 android android-intent

我正在尝试从我的应用中安装APK.我已经看到那些显示要使用的Intent的例子.通常是这样的:

Uri apkUrl = Uri.parse(Environment.getExternalStorageDirectory() + "/Download/" + "Test.apk");
Intent promptInstall = new Intent(Intent.ACTION_VIEW).setDataAndType(apkUrl, "application/vnd.android.package-archive");
startActivity(promptInstall);
Run Code Online (Sandbox Code Playgroud)

当我运行它虽然我得到例外:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=/storage/emulated/0/Download/Test.apk typ=application/vnd.android.package-archive }
Run Code Online (Sandbox Code Playgroud)

我是android的新手.但我想这意味着Test.apk需要一个活动,其中包含ACTION_VIEW意图的清单xml.但是我不确定如何编写它或者它是否需要在源文件中与它相关的活动?或者安装apk的要求是什么?

谢谢!凯尔

Dav*_*ser 5

该错误表示Android无法找到任何可以处理查看给定URI的请求的已安装活动.它与APK内部的代码无关.

您的问题是您的URI没有方案,格式不正确.URI应如下所示:

`file:///storage/emulated/0/Download/Test.apk`
Run Code Online (Sandbox Code Playgroud)

要修复它,你可以这样做:

File apkFile = new File(Environment.getExternalStorageDirectory() + "/Download/" + "Test.apk");
Uri apkUrl = Uri.fromFile(apkFile);
Run Code Online (Sandbox Code Playgroud)