我想知道是否可以通过编程从自定义 Android 应用程序中安装动态下载的 apk。
您可以轻松启动播放商店链接或安装提示:
Intent promptInstall = new Intent(Intent.ACTION_VIEW)
.setDataAndType(Uri.parse("content:///path/to/your.apk"),
"application/vnd.android.package-archive");
startActivity(promptInstall);
或
Intent goToMarket = new Intent(Intent.ACTION_VIEW)
.setData(Uri.parse("https://play.google.com/store/apps/details?id=com.package.name"));
startActivity(goToMarket);
但是,如果没有用户的明确许可,就不能安装 .apk;除非设备和程序已被 root。
好吧,我深入挖掘,从 Android 源代码中找到了 PackageInstaller 应用程序的源代码。
https://github.com/android/platform_packages_apps_packageinstaller
从清单中,我发现它需要权限:
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
而实际安装过程是在确认后进行的
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);
是的,这是可能的。但为此你需要手机安装未经验证的源。例如,slideMe 就是这样做的。我认为你能做的最好的事情就是检查应用程序是否存在,并向安卓市场发送意图。
market://details?id=package.name
我不知道具体如何启动活动,但如果使用这种网址启动活动。它应该会打开安卓市场,并让你选择安装应用程序。