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