首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Android上以编程方式安装应用程序

在Android上以编程方式安装应用程序
EN

Stack Overflow用户
提问于 2011-01-05 20:59:04
回答 14查看 208.3K关注 0票数 235

可以通过编程方式从自定义Android应用程序安装动态下载的apk。

EN

回答 14

Stack Overflow用户

发布于 2011-03-17 18:58:14

代码语言:javascript
复制
File file = new File(dir, "App.apk");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
startActivity(intent);

我也有同样的问题,经过几次尝试后,我的结果是这样的。我不知道为什么,但是单独设置数据和类型搞砸了我的意图。

票数 57
EN

Stack Overflow用户

发布于 2011-01-05 22:17:45

好吧,我深入挖掘,从Android Source找到了PackageInstaller应用程序的源代码。

https://github.com/android/platform_packages_apps_packageinstaller

从清单中我发现它需要权限:

代码语言:javascript
复制
    <uses-permission android:name="android.permission.INSTALL_PACKAGES" />

实际安装过程在确认后进行

代码语言:javascript
复制
Intent newIntent = new Intent();
newIntent.putExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO, mPkgInfo.applicationInfo);
newIntent.setData(mPackageURI);
newIntent.setClass(this, InstallAppProgress.class);
String installerPackageName = getIntent().getStringExtra(Intent.EXTRA_INSTALLER_PACKAGE_NAME);
if (installerPackageName != null) {
   newIntent.putExtra(Intent.EXTRA_INSTALLER_PACKAGE_NAME, installerPackageName);
}
startActivity(newIntent);
票数 32
EN

Stack Overflow用户

发布于 2014-11-11 23:00:11

我只想分享一个事实,我的apk文件被保存到我的应用程序"Data“目录中,我需要将apk文件的权限更改为完全可读,才能允许以这种方式安装它,否则系统将抛出"Parse error: There a Problem Parsing the Package";因此,使用@Horaceman提供的解决方案使:

代码语言:javascript
复制
File file = new File(dir, "App.apk");
file.setReadable(true, false);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
startActivity(intent);
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4604239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档