Permission denied,换种方法也会出现的

解决方案 »

  1.   

    虽然权限加了,但是你要注意一下权限的位置:http://www.apkbus.com/android-15617-1-1.html
      

  2.   

    FileOutputStream os = ctx.openFileOutput(file.getName(),Context.MODE_WORLD_WRITEABLE);
      

  3.   


    if (!file.exists()) {
    file.createNewFile();
    }
    FileOutputStream os = ctx.openFileOutput(file.getName(),
    Context.MODE_WORLD_WRITEABLE);
    byte[] bytes = new byte[512];
    int i = -1;
    while ((i = is.read(bytes)) > 0) {
    os.write(bytes);
    } os.close();
    is.close();
    String permission = "666"; try { String command = "chmod " + permission + " " + apkPath
    + "/" + destapkName;
    Runtime runtime = Runtime.getRuntime();
    runtime.exec(command);
    } catch (IOException e) {
    e.printStackTrace();
    }
      

  4.   

    麻烦楼上的各位看好我的问题再说话好吧。我的意思是说写文件到/data/data/packagename/files 里边去除了openFileOutput 还有其他什么方法。如果直接简单的createnewfile() 云云,会报open failed: EACCE的错..
      

  5.   

    如果packagename,不是你当前调用createnewfile的应用的包名,是没有权限的
      

  6.   

    我看了一下,/data/data/packagename/files中files的权限是700,system system ,证明只有system权限才有在里面创建文件的权限,你如果是在想要在里面创建文件的话需要手动修改files文件的权限。
      

  7.   

    String apkPath = "/data/data/" + getPackageName() + "/files";  
    怀疑你的路径错误,不是权限的问题
    请参考
    http://ccsosnfs.iteye.com/blog/1390405
      

  8.   


    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;import android.app.Activity;
    import android.os.Bundle;public class FileTestActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            //创建输入输出流对象
            FileOutputStream outfile = null;
            FileInputStream infile = null;
    try {
    //创建openFile的两个对象 openFileOutput()的两个参数
    //第一个是文件名,第二个是属性,0代表只允许应用程序操作这个文件
    outfile = this.openFileOutput("test.txt", 0);
    infile = this.openFileInput("test.txt");
    } catch (FileNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
            DataOutputStream dout = null ;
            try {
             //写文件
     dout = new DataOutputStream(outfile );
    dout.writeUTF("testtesttesttesttesttest");
    dout.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
            DataInputStream din = null;
            //读文件
            din = new DataInputStream(infile);
            String result = null;
            try {
    result = din.readLine();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
            System.out.println(result);
        }
    }用openFileOutput不需要加权限啊...
      

  9.   

    创建文件的时候,使用绝对路径,例如:
    File outfilepath = new File(Environment.getExternalStorageDirectory(),"/myfiles");
    new File(outfilepath.getAbsolutePath(), outfileName);
      

  10.   


    你好,我问的是在/data/data/packagename/files里边创建文件为何总是报错。不是说如何创建文件。
      

  11.   

    解决了。以后不到csdn上问问题了。
      

  12.   

    主要看到一些人莫名其妙的回答问题感觉郁闷!很多次了。
    按你说的那样弄的。其实还是在/data/data操作文件的权限问题。
    加参数Context.MODE_WORLD_WRITEABLE+Context.MODE_WORLD_READABLE+
    Context.MODE_APPEND.
      

  13.   

    楼主你好,我想问一下,要是修改  该路径下面的文件里面的值,是不是也要加这个权限啊???我在模拟器上没有加任何权限,但是可以修改可是打包成apk 以后 到了真机上以后 却没有修改看了整个帖子他们好像都说用  fileoutput 不用权限我用的就是 这个  可是 还是没有修改
      

  14.   

    也有这样的可能。就是你的sd卡没有mount上。用真机测试很容易会这样。拨线后再试试
      

  15.   

    主要看到一些人莫名其妙的回答问题感觉郁闷!很多次了。
    按你说的那样弄的。其实还是在/data/data操作文件的权限问题。
    加参数Context.MODE_WORLD_WRITEABLE+Context.MODE_WORLD_READABLE+
    Context.MODE_APPEND.请问这个加在那里?
      

  16.   

    楼主!
    主要看到一些人莫名其妙的回答问题感觉郁闷!很多次了。
    按你说的那样弄的。其实还是在/data/data操作文件的权限问题。
    加参数Context.MODE_WORLD_WRITEABLE+Context.MODE_WORLD_READABLE+
    Context.MODE_APPEND.请问这个加在那里?怎么解决啊? 请教一下啊!!!