写入/ dev / hid设备时出现奇怪的Android行为

时间:2015-04-06 20:35:05

标签: java android linux security fileoutputstream


我试图将一些数据写入/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(原生方法)

断点显示以下信息:

breakpoint

我可以看到" Guard"部分但无法找出它在这里扮演的角色。你能帮我理解我的问题吗?

0 个答案:

没有答案