我想在/data/data/目录下创建一个aaa文件,用adb push的命令可以push进去,
可是当我用代码实现的时候,执行到
new File("data/data/aaa").createNewFile();
的时候,就会出现
01-01 03:04:21.730: WARN/System.err(19592): java.io.IOException: Permission denied
01-01 03:04:21.730: WARN/System.err(19592):     at java.io.File.createNewFileImpl(Native Method)
01-01 03:04:21.730: WARN/System.err(19592):     at java.io.File.createNewFile(File.java:1160)
01-01 03:04:21.730: WARN/System.err(19592):     at com.eric.ECompassCalibrator.createFile(ECompassCalibrator.java:256)
01-01 03:04:21.730: WARN/System.err(19592):     at com.eric.ECompassCalibrator.onCreate(ECompassCalibrator.java:98)

01-01 03:04:21.730: WARN/System.err(19592):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-01 03:04:21.730: WARN/System.err(19592):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-01 03:04:21.730: WARN/System.err(19592):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-01 03:04:21.730: WARN/System.err(19592):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-01 03:04:21.730: WARN/System.err(19592):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-01 03:04:21.730: WARN/System.err(19592):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-01 03:04:21.730: WARN/System.err(19592):     at android.os.Looper.loop(Looper.java:123)
01-01 03:04:21.730: WARN/System.err(19592):     at android.app.ActivityThread.main(ActivityThread.java:4627)
01-01 03:04:21.734: WARN/System.err(19592):     at java.lang.reflect.Method.invokeNative(Native Method)
01-01 03:04:21.734: WARN/System.err(19592):     at java.lang.reflect.Method.invoke(Method.java:521)
01-01 03:04:21.734: WARN/System.err(19592):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-01 03:04:21.734: WARN/System.err(19592):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-01 03:04:21.734: WARN/System.err(19592):     at dalvik.system.NativeStart.main(Native Method)是不是我有什么权限没有加啊?小弟在此请教各位高手了!谢谢!

解决方案 »

  1.   

    当然阿,你没有看到提示么
    01-01 03:04:21.730: WARN/System.err(19592): java.io.IOException: Permission denied
      

  2.   

    把工程的包名加上  包名为COM.a   new File("data/data/com.a/aaa").createNewFile();
      

  3.   

    在你的MANIFEST中加入权限,<uses-permission android:name="android.permission.XXXX"/>
    具体XXXX是什么权限 ,根据你自己的需求吧
      

  4.   

    使用 File destFile = context.getFileStreamPath("FileName");if (! destFile.exist()){
        destFile.createNewFile();
    }
    试试看
      

  5.   

    一般设备,没有拿到root权限的话,是不能随意写/data/目录的
    不过有一个例外,就是app的默认目录,即/data/data/<package name>
    所以4楼的同学说得对,一般情况下,那个目录,加上/data/local/tmp,加/sdcard/是不多的几个可写目录