我试图将一些数据写入/dev/hidg0
文件(USB-HID设备),该文件具有777个文件权限。
不幸的是,当尝试执行write()
方法时,设备挂起,我无法找到原因。
顺便说一下,在我的主要手机上一切正常,但我现在又有一个专门针对此应用。它没有扎根,但是" sz" shell中的命令通过终端会话授予我root权限。
方法如下:
File f = new File("/dev/hidg0");
//returns "true true true"
System.out.println(f.canRead() + " " + f.canWrite() + " " + f.canExecute());
FileOutputStream fos = new FileOutputStream(f);
byte[] to_send = new byte[] {0,0,0x21,0,0,0,0,0};
fos.write(to_send, 0, to_send.length);
从DDMS我设法进行堆栈跟踪:
at libcore.io.Posix.writeBytes(Native Method)
在 libcore.io.Posix.write(Posix.java:178)
在 libcore.io.BlockGuardOs.write(BlockGuardOs.java:191)
在 libcore.io.IoBridge.write(IoBridge.java:457)
在 java.io.FileOutputStream.write(FileOutputStream.java:187)
在 ru.mastergroosha.hidapp.Main.sendKeys(Main.java:101)
在 ru.mastergroosha.hidapp.Main.onClick(Main.java:143)
在 android.view.View.performClick(View.java:4211)
在 android.view.View $ PerformClick.run(View.java:17267)
在 android.os.Handler.handleCallback(Handler.java:615)
在 android.os.Handler.dispatchMessage(Handler.java:92)
在 android.os.Looper.loop(Looper.java:137)
在 android.app.ActivityThread.main(ActivityThread.java:4898)
在 java.lang.reflect.Method.invokeNative(Native Method)
在 java.lang.reflect.Method.invoke(Method.java:511)
在 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1006)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
在 dalvik.system.NativeStart.main(原生方法)
断点显示以下信息:
我可以看到" Guard"部分但无法找出它在这里扮演的角色。你能帮我理解我的问题吗?