0

是否可以以编程方式下载应用程序?我并不是说要在某个应用上启动 Google Play。假设我有 3 个应用程序,它们都相关但具有不同的功能。是否可以创建第 4 个应用程序,当您下载时它还会下载其他 3 个应用程序并用作它们的中心?如果是这样,有人可以指出我正确的方向吗?

4

4 回答 4

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);

如果您正在安装的 APK 覆盖了您用于启动包管理器的应用程序,则 FLAG_ACTIVITY_NEW_TASK 可防止某些手机崩溃。

于 2013-03-25T16:15:22.180 回答
0

还有扩展文件的选项。也许这可能符合要求?

于 2013-03-25T16:04:47.383 回答
0

您不能自动安装应用程序,这对用户来说风险很大。

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

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

于 2013-03-25T16:02:49.293 回答
0

你也可以这样做:

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

于 2017-10-27T10:22:20.847 回答