Android - 以编程方式下载其他应用

时间:2013-03-25 15:54:52

标签: android google-play

是否可以通过编程方式下载应用程序?我不是故意将Google Play推向某个应用。假设我有3个应用程序,所有相关但具有不同的功能。是否有可能创建第4个应用程序,当您下载时也下载其他3并作为它们的中心?如果是这样,有人能指出我正确的方向吗?

4 个答案:

答案 0 :(得分:0)

您无法自动安装应用,这对用户来说风险很大。

您可以下载一堆新的APK,但用户必须通过打开.apks自行安装它们。

但是,您也可以在内部创建一个大型应用,但将其显示为多个小应用,因为您可以将多个活动设置为启动器活动。也许这是你的选择?

答案 1 :(得分:0)

还有Expansion Files的选项。也许这可能适合这项法案?

答案 2 :(得分:0)

是的。我前几天就这样做了。您的应用需要一些权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.INSTALL_PACKAGES"/>
<uses-permission android:name="android.permission.DELETE_PACKAGES"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

写外部存储是因为您必须在某处下载并保存您的APK文件。

此外,您还需要以某种方式获取文件。我使用Java的HttpUrlConnection对象进行实际下载(您可以搜索有关如何在Android应用程序中下载文件的更好解释,但这非常简单。)

下载文件后,您只需启动软件包管理器并告诉它进行安装。不幸的是,用户将面临与安装应用程序相同的对话框,他们可以选择拒绝安装。要在没有用户干预的情况下进行安装,您可能需要从应用程序连接到ADB并以此方式调用程序包管理器,尽管我不确定那里将涉及哪种权限。如果您不介意用户看到安装确认对话框,则此代码将起作用:

Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setDataAndType(Uri.fromFile(new File("/sdcard/whereever-you-saved-this.apk")), "application/vnd.android.package-archive");
    startActivityForResult(intent, 0);

FLAG_ACTIVITY_NEW_TASK可防止某些手机崩溃,如果您安装的APK会覆盖您用于启动套装管理器的应用。

答案 3 :(得分:0)

您也可以这样做:

通过网络服务从服务器下载APK文件,下载后使用INSTALL_PACKAGES权限安装这些APK文件。