Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.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_Android Download Manager - Fatal编程技术网

Java Android下载管理器保存到/系统

Java Android下载管理器保存到/系统,java,android,android-download-manager,Java,Android,Android Download Manager,我只是在玩Android Studio,我想知道如何将文件下载到/system 我知道我需要根为这一点,我已经得到了工作的一部分,我唯一的麻烦是与 request.setDestinationNexternalPublicDir(“/system/”,“test.jpg”) 目标是下载一个文件并将其保存到/system,文件名为test.jpg 因此,文件的结尾位于/system/test.jpg 问题是DownloadManager正在将其保存到内部存储器,并正在创建一个名为“system”的

我只是在玩Android Studio,我想知道如何将文件下载到/system

我知道我需要根为这一点,我已经得到了工作的一部分,我唯一的麻烦是与

request.setDestinationNexternalPublicDir(“/system/”,“test.jpg”)

目标是下载一个文件并将其保存到/system,文件名为test.jpg

因此,文件的结尾位于/system/test.jpg

问题是DownloadManager正在将其保存到内部存储器,并正在创建一个名为“system”的新文件夹

我可以看出它与
setDestinationNexternalPublicDir
有关,但我不确定要将其更改为什么

再次感谢

我所做的是:
(这是我的一个项目的一部分)

我发现,等待下载完成的东西有点粗糙。下载时间超过5秒的文件可能不起作用

我所做的是:
(这是我的一个项目的一部分)


我发现,等待下载完成的东西有点粗糙。它可能无法处理需要5秒钟以上才能下载的文件

您需要从android源代码重新编译android。。。说真的,猜猜在方法名中,
internalPublicDir
意味着什么。。。然后想想是
/system/
一个
ExternalPublicDir
。。。显然,您应该将文件保存在某个位置,然后复制/移动到
/system/
(当然,复制/移动为root)您需要从android源代码重新编译android。。。说真的,猜猜在方法名中,
internalPublicDir
意味着什么。。。然后想想是
/system/
一个
ExternalPublicDir
。。。显然,您应该将文件保存在某个位置,然后复制/移动到
/system/
(当然,复制/移动为root)
/*****DOWNLOAD FILE*****/
DownloadManager.Request request = new DownloadManager.Request(Uri.parse("https://github.com/pelya/android-keyboard-gadget/blob/master/hid-gadget-test/hid-gadget-test?raw=true"));
request.setDescription("hid-gadget-test");
request.setTitle("hid-gadget-test");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    request.allowScanningByMediaScanner();
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
}
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "hid-gadget-test"); /*****SAVE TO DOWNLOAD FOLDER*****/


DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);

File mvfile = new File("/sdcard/"+Environment.DIRECTORY_DOWNLOADS+"/hid-gadget-test");
while (!mvfile.exists()) {}  /*****WAIT UNTIL DOWNLOAD COMPLETE*****/
try {
    Thread.sleep(5000);
} catch (InterruptedException ignored) {}


try {  /*****RUN MV-COMMAND TO MOVE TO ROOT DIR*****/
    Process su = Runtime.getRuntime().exec("su");
    DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());

    outputStream.writeBytes("mv /sdcard/"+Environment.DIRECTORY_DOWNLOADS+"/hid-gadget-test /data/local/tmp/hid-gadget-test\n");
    outputStream.flush();

    outputStream.writeBytes("exit\n");
    outputStream.flush();
    su.waitFor();
} catch (IOException e) {
    Toast.makeText(getApplicationContext(), "IOException", Toast.LENGTH_SHORT).show();
} catch (InterruptedException e) {
    Toast.makeText(getApplicationContext(), "InterruptedException", Toast.LENGTH_SHORT).show();
}