我想知道是否有可能让已安装的 Android 应用程序去下载并安装其它应用程序?我认为这可能存在安全问题,但 Android 操作系统是否能够实现这一点?
我想知道是否有可能让已安装的 Android 应用程序去下载并安装其它应用程序?我认为这可能存在安全问题,但 Android 操作系统是否能够实现这一点?
严格来说,不可能。在设备上安装的每个Android包(.apk)文件都被赋予自己独特的Linux用户ID,为它创建沙盒并防止其触及其他应用程序。
如果一个应用程序要“安装”另一个应用程序,它无法给目标分配新的用户ID。只有以根级别运行的系统小程序能够实现这一点。
应用程序可以间接地使用ACTION_VIEW
意图和application/vnd.android.package-archive
MIME类型来调用包安装程序:系统将启动适当的“查看器”,这当然是包安装程序。
关于此主题的良好链接:http://android.amberfog.com/?p=98
是的。Swype beta 就是这样工作的。你需要做的基本上是下载新版apk,并使用某些Intent(不确定是哪个)来启动包安装程序(此时它是一个新的活动,用户必须同意安装,就像从市场上下载一样)。
尝试这个:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(path+"/yourapp.apk")), application/vnd.android.package-archive");
startActivity(intent);
INSTALL_PACKAGES
权限的特殊能力。如果需要这类系统应用的示例,fdroid特权扩展
应用是一个很好的例子,或者AuroraServices
(一个fdroid特权扩展应用的分支)。它们在后台工作,调用系统安装程序而不会提醒用户。 - smac89