我试图将一些字符串保存到SD卡上,但是程序抛出了一个异常open failed EACCES(权限被拒绝)。我在一个设备上进行了测试(华硕Zenfone 5),在清单文件中声明了WRITE_EXTERNAL_STORAGE权限,我的SD卡已经挂载并且可以读写数据(我通过复制一些MP3文件并播放它们来检查它)。 由于这是一个特定于手机的应用程序,而且该手机有内部和外部存储器,我想将文件保存在外部SD卡中,因此我编写了以下代码。我使用终端模拟器应用程序使用“cd”和“ls”命令获取了外部SD卡的绝对路径。我的手机没有root,因此我无法直接更改权限。我尝试了谷歌和stackoverflow上所有可能的方法,请帮我解决问题。
public void savePublicExternalFile(String data){
File folder = new File("/Removable/MicroSD/");
//i have also tried File folder = new File("/Removable/MicroSD");
File myFile = new File(folder,"mydata.txt");
WriteData(myFile, data);
}
private void WriteData(File myFile, String data){
if(t){
Log.i("AbsolutePath",myFile.getAbsolutePath());
t = false;
}
FileOutputStream fileOutputStream=null;
try {
fileOutputStream = new FileOutputStream(myFile);
fileOutputStream.write(data.getBytes());
} catch (Exception e) {
Log.i("exception",e.toString());
} finally {
if(fileOutputStream!=null){
try {
fileOutputStream.close();
} catch (IOException e) {
Log.i("exception", e.toString());
}
}
}
}