Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以通过编程方式从字节数组安装Android应用程序吗?_Java_Android - Fatal编程技术网

Java 我可以通过编程方式从字节数组安装Android应用程序吗?

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

我知道我可以通过下面的代码以编程方式安装一个Android应用程序,该代码传递一个文件的名称。我可以在不传递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);

以这种方式安装应用程序时,实际上并不是直接安装应用程序。发生的情况是启动安装程序,并向安装程序传递对要安装的APK的引用。安装程序不是应用程序代码的一部分,并且无法访问应用程序进程中的内存


如果您有一个包含APK的字节数组,那么唯一的方法就是将该字节数组写入一个文件,然后启动安装程序并向其传递一个指向您编写的文件的URI。安装完成后,您可以删除该文件(以免在用户手机上留下随机垃圾)。

是的,唉,安装程序需要文件系统中的一个文件。即使使用
content://
Uri
也不够:有没有办法直接安装应用程序?!否。如果应用程序可以在没有用户交互的情况下安装它想要的任何东西,这将是一场安全噩梦。我可以将字节数组写入手机内存中的文件并将引用它的Uri传递给安装程序吗?可以。您可以在手机内存中创建一个APK文件,然后将指向该文件的URI传递给安装程序。这将是一个
文件://
URL,而不是
内容://
URL。