如何解决如何在 Android 上拥有将文件保存到 SD 卡的权限
我最近创建了一个应用程序,我通过一个意图过滤器在其中共享文件,以便用户可以将共享文件保存在系统上的任何文件夹中。
此应用的目的是共享来自 WhatsApp(或任何其他应用)的文件,并通过文件资源管理器选择保存位置。
它在内部存储中正常工作。可以将文件保存在该位置的任何文件夹中。但是,在选择外部存储文件夹(外部“SD卡”时,它不允许保存,并显示指示权限错误的消息,抛出以下异常:
java.io.IOException: open Failed: EACCES (Permission denied)
at java.io.File.createNewFile(File.java:939)
at br.com.luansilveira.savefile.MainActivity.btSalvarClick(MainActivity.java:370)
在应用程序清单中,已请求存储权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
并且在启动应用程序时,会为用户请求它们。
public void btSalvarClick(View view) {
String filename = diretorioAtual.getAbsolutePath() + "/" + ednomeArquivo.getText().toString();
try {
File novoArquivo = new File(diretorioAtual,ednomeArquivo.getText().toString());
if (!novoArquivo.createNewFile()) {
Toast.makeText(this,"O arquivo já existe!",Toast.LENGTH_LONG).show();
return;
}
FileOutputStream outputStream = new FileOutputStream(novoArquivo);
outputStream.write(getBytes(uri));
outputStream.close();
finish();
Toast.makeText(this,"Arquivo salvo",Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
e.printstacktrace();
Toast.makeText(this,"Sem permissão para salvar neste local",Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printstacktrace();
Toast.makeText(this,"Erro ao salvar: \n" + e.getMessage(),Toast.LENGTH_LONG).show();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。