以编程方式安装apk时出错

时间:2011-02-01 06:55:03

标签: android

我正在尝试以下代码来安装保存在SD卡上的apk文件并获得以下异常:“android.content.ActivityNotFoundException:无法找到显式活动类{com.android.packageinstaller / .PackageInstallerActivity}”。在代码中,file表示apk文件的SD卡路径。

Intent resultIntent = new Intent(android.content.Intent.ACTION_VIEW);
resultIntent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive");
resultIntent.setClassName("com.android.packageinstaller", ".PackageInstallerActivity");
 startActivity(resultIntent);

请让我知道如何管理。

由于 Javed khan

2 个答案:

答案 0 :(得分:4)

您可能希望阅读有关如何使用PackageInstaller安装和删除软件包的this blog post

请注意,由于已注册包安装程序以处理MIME类型application/vnd.android.package-archive,因此您不必明确指定intent类名;意图解析器应该找到合适的解决方案。

此外,仅当用户启用INSTALL_NON_MARKET_APPS时,操作才会成功。这与您所看到的失败直接相关,但要记住这一点,因为您可能会遇到这种情况。

答案 1 :(得分:0)

尝试像这样添加Intent.FLAG_ACTIVITY_NEW_TASK

Intent resultIntent = new Intent();
resultIntent.setAction(Intent.ACTION_VIEW);
resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
resultIntent.setDataAndType(Uri.fromFile(file),"application/vnd.android.package-archive");

然后致电

startActivity(resultIntent);

请注意!正如Franci Penov先前提到的那样,关于INSTALL_NON_MARKET_APPS的条件仍然有效!