2013-03-25 115 views
0

是否可以通过编程方式下载应用程序?我不打算将Google Play发布到某个应用。比方说,我有3个应用程序,所有相关但具有不同的功能。是否有可能创建一个第四个应用程序,当你下载也下载其他3并作为他们的枢纽?如果是这样,有人能指出我的方向吗?android - 以编程方式下载其他应用程序

回答

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覆盖您用于启动软件包的应用经理。通过Web服务从服务器

下载的APK文件,下载后使用INSTALL_PACKAGES许可安装这些APK文件:

+0

您是否从Google Play以外的地方下载了APK,请更正? – David 2013-03-25 16:21:52

+0

当您启动应用程序管理器时,它只是一个APK。无论你从哪里得到它,无论它是否已签名等都无关紧要。这只是SD卡上的一个文件,应用程序管理员恰好知道该如何处理。你可以使用它从市场或其他地方下载,但它没有什么区别。 – Alex 2013-03-25 17:51:54

0

您无法自动安装应用程序,这对用户来说会非常危险。

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

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

0

您可以通过这种方式也做到这一点。

相关问题