我能否通过编程从字节数组中安装Android应用程序?

4

我知道可以通过下面的代码以编程方式安装Android应用程序,该代码传递APK文件的URI。我能否在不传递APK文件URI的情况下安装应用程序?例如,获取APK文件的字节数组并安装它?

File appFile = new File("application.apk");
Intent installIntent = new Intent(Intent.ACTION_VIEW);
installIntent.setDataAndType(Uri.fromFile(appFile),"application/vnd.android.package-archive");
startActivity(installIntent);
1个回答

2
当您以这种方式安装应用程序时,实际上并没有直接安装应用程序。发生的是您启动了安装程序并向其传递了要安装的APK的引用。安装程序不是您的应用程序代码的一部分,并且无法访问您的应用程序进程中的内存。
如果您有包含APK的字节数组,则唯一的方法是将字节数组写入文件,然后启动安装程序并传递指向已写入的文件的URI。安装完成后,您可以删除该文件(以免在用户手机上留下随机垃圾)。

是的,不幸的是,安装程序需要文件系统上的一个文件。即使使用“content://”“Uri”也是不够的:https://dev59.com/NGkw5IYBdhLWcg3wzdtF - CommonsWare
有没有直接安装应用程序的方法?! - Armin
不行。如果一个应用程序可以在没有用户交互的情况下安装任何它想要的东西,那将是一个安全噩梦。 - David Wasser
我可以将字节数组写入手机内存中的文件,并将引用它的Uri传递给安装程序吗? - Armin
是的。您可以在手机存储上创建一个APK文件,然后将指向该文件的URI传递给安装程序。这将是一个file:// URL而不是一个content:// URL。 - David Wasser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接