我要往这个目录下的文件写值:/sys/class/usb_composite/usb_mass_compsite/enable
我是这样做的:
File usb_file = new File("/sys/class/usb_composite/usb_mass_compsite/enable");
FileOutputStream fos = new FileOutputStream(usb_file);
DataOutputStream dos = new DataOutputStream(fos);
dos.writeInt(1);
dos.writeUTF("123");
fos.close();
dos.close();
我已经把这些代码都try()catch{}了。现在报非法的参数Illegal Agument。可是我在PC机上执行这些代码没有任何问题啊?为什么在手机上就不行了啊?而且权限我都弄好了。

解决方案 »

  1.   

    应该是权限问题。
    真机和模拟器是有区别的,比如在模拟器中可以访问/data/data/(包名)/databases,而在真机中是不能这么访问的。
    为了验证是不是权限问题,你可以试一试把文件写在项目中(用sqlite模拟一下)。
      

  2.   

    权限是没问题的,如果没权限的话,执行的时候会报Permission denied这个错误。一开始我就是报这个错,后来我在init.irc文件里已经把这个文件的权限修改了chmod777 /sys/class/usb_composite/usb_mass_compsite/enable并重新烧boot.img,权限问题就解决了。
    这个文件是存在的。就是在dos.writeInt(1);这些写值的地方报非法参数错误。
      

  3.   

    dos.writeInt(1)换成 dos.writeInt(new Integer(1));试试看
      

  4.   

    /sys/class/usb_composite/usb_mass_compsite/enable
    好多没有这个文件,你需要考虑兼容的问题啊,G7,G12都没有。
      

  5.   

    MOTO是有的,这个文件其实是这个/sys/devices/virtual/usb_composite/usb_mass_storage/enable文件的一个映射。现在报无效的参数,Invailid argument(at org.apache.harmony.luni.platform.OsFileSystem.write(Native Method))
      

  6.   

    搞定了,将boot版本和system版本升级为一致的版本