Java 如何以编程方式向分区/系统写入内容?

Java 如何以编程方式向分区/系统写入内容?,java,android,Java,Android,我用Android 6.0.1(棉花糖)闪现了我的手机固件。我还可以访问root 我为更新程序和其他应用程序创建了应用程序。此应用程序已放入/system/app。 此应用程序正在尝试将文件创建到/system,但出现错误(只读文件系统) 这里是代码 try { Runtime.getRuntime().exec("su && su mount -o rw,remount /system");

我用Android 6.0.1(棉花糖)闪现了我的手机固件。我还可以访问root

我为更新程序和其他应用程序创建了应用程序。此应用程序已放入/system/app。 此应用程序正在尝试将文件创建到/system,但出现错误(只读文件系统)

这里是代码

                try {
                    Runtime.getRuntime().exec("su && su mount -o rw,remount /system");

                    try(PrintWriter out = new PrintWriter(PATH + "/hash")) {
                        out.println(body);
                    }

                    Log.i(TAG, "create hash");
                }
                catch(Exception e1) {
                    e1.printStackTrace();
                    Log.e(TAG, e1.getMessage());
                }
这里是堆栈跟踪

W/System.err: java.io.FileNotFoundException: /system/hash: open failed: EROFS (Read-only file system)
W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:452)
W/System.err:     at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
W/System.err:     at java.io.FileOutputStream.<init>(FileOutputStream.java:127)
W/System.err:     at java.io.FileOutputStream.<init>(FileOutputStream.java:116)
W/System.err:     at java.io.PrintWriter.<init>(PrintWriter.java:168)
W/System.err:     at net.lockoil.updaterutmhelper.UpdaterService$Task$1.onResponse(UpdaterService.java:99)
W/System.err:     at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
W/System.err:     at android.os.Handler.handleCallback(Handler.java:739)
W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
W/System.err:     at android.os.Looper.loop(Looper.java:148)
W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5461)
W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
W/System.err: Caused by: android.system.ErrnoException: open failed: EROFS (Read-only file system)
W/System.err:     at libcore.io.Posix.open(Native Method)
W/System.err:     at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
W/System.err:     at libcore.io.IoBridge.open(IoBridge.java:438)
W/System.err:java.io.FileNotFoundException:/System/hash:open失败:EROFS(只读文件系统)
W/System.err:at libcore.io.IoBridge.open(IoBridge.java:452)
W/System.err:at java.io.FileOutputStream.(FileOutputStream.java:87)
W/System.err:at java.io.FileOutputStream.(FileOutputStream.java:127)
W/System.err:at java.io.FileOutputStream.(FileOutputStream.java:116)
W/System.err:at java.io.PrintWriter.(PrintWriter.java:168)
W/System.err:at net.lockoil.updaterutmhelper.UpdaterService$Task$1.onResponse(UpdaterService.java:99)
W/System.err:at reformation2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
W/System.err:at-android.os.Handler.handleCallback(Handler.java:739)
W/System.err:at-android.os.Handler.dispatchMessage(Handler.java:95)
W/System.err:at-android.os.Looper.loop(Looper.java:148)
W/System.err:at-android.app.ActivityThread.main(ActivityThread.java:5461)
W/System.err:at java.lang.reflect.Method.invoke(本机方法)
W/System.err:com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
W/System.err:com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
W/System.err:原因:android.System.ErrnoException:打开失败:EROFS(只读文件系统)
W/System.err:at libcore.io.Posix.open(本机方法)
W/System.err:at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
W/System.err:at libcore.io.IoBridge.open(IoBridge.java:438)

如何以编程方式将内容写入/system?

您应该首先通过调用
su
命令获得root访问权限,并将
/system
装载为可写:

Runtime.getRuntime().exec("su && su mount -o rw,remount /system");

然后您应该能够写入
/system
分区。在此处阅读更多信息:

查看此信息:不,没有帮助您是否遵循我提供的链接中的步骤?