Java 我可以通过编程方式从字节数组安装Android应用程序吗?
我知道我可以通过下面的代码以编程方式安装一个Android应用程序,该代码传递一个文件的名称。我可以在不传递APK文件URI的情况下安装应用程序吗?例如,获取APK文件的字节数组并安装它Java 我可以通过编程方式从字节数组安装Android应用程序吗?,java,android,Java,Android,我知道我可以通过下面的代码以编程方式安装一个Android应用程序,该代码传递一个文件的名称。我可以在不传递APK文件URI的情况下安装应用程序吗?例如,获取APK文件的字节数组并安装它 File appFile = new File("application.apk"); Intent installIntent = new Intent(Intent.ACTION_VIEW); installIntent.setDataAndType(Uri.fromFile(appFile),"appli
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);
以这种方式安装应用程序时,实际上并不是直接安装应用程序。发生的情况是启动安装程序,并向安装程序传递对要安装的APK的引用。安装程序不是应用程序代码的一部分,并且无法访问应用程序进程中的内存
如果您有一个包含APK的字节数组,那么唯一的方法就是将该字节数组写入一个文件,然后启动安装程序并向其传递一个指向您编写的文件的URI。安装完成后,您可以删除该文件(以免在用户手机上留下随机垃圾)。是的,唉,安装程序需要文件系统中的一个文件。即使使用
content://
Uri
也不够:有没有办法直接安装应用程序?!否。如果应用程序可以在没有用户交互的情况下安装它想要的任何东西,这将是一场安全噩梦。我可以将字节数组写入手机内存中的文件并将引用它的Uri传递给安装程序吗?可以。您可以在手机内存中创建一个APK文件,然后将指向该文件的URI传递给安装程序。这将是一个文件://
URL,而不是内容://
URL。