我尝试发送文件(Intent.ACTION_SEND),但是当我使用gmail时,权限失败,gmail通知我附件的权限不允许发送。 这是我的代码:
private void LoadSendFile() {
String temp = new String();
File tempFile = new File(Environment.getExternalStorageDirectory() + File.separator + "Datos" + ext);
try {
FileOutputStream fos = new FileOutputStream(tempFile);
for (ActivityMat data : matriculas) {
if (!data.getViajesConductor().isEmpty()) {
for (String date : data.getViajesConductor()) {
temp += data.getName() + ": " + date + "\n";
fos.write(temp.getBytes());
Log.e("Write File: ", temp);
}
}
}
fos.close();
} catch (FileNotFoundException e){
Log.e("Creando fichero: ", e.getMessage(), e);
Toast toast = Toast.makeText(MainActivity.this, "File not found ...", Toast.LENGTH_SHORT);
toast.show();
return;
} catch (IOException e) {
Log.e("Escribiendo fichero: ", e.getMessage(), e);
Toast toast = Toast.makeText(MainActivity.this, "Can not build the file ...", Toast.LENGTH_SHORT);
toast.show();
return;
}
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(tempFile));
sendIntent.setType("application/csv");
startActivity(sendIntent);
}
提前致谢!!!
(对不起我的语言,我不是英语)
更新: 代码已更新。现在我有权限,但是gmail通知我它不能发送一个空文件,但我知道(因为我在写入文件时写了一条日志消息(Datos.csv))我写在文件中。任何的想法?? 这是日志(我看到是一个许可问题):
E/Creando fichero:: /storage/emulated/0/Datos.csv: open failed: EACCES (Permission denied)
java.io.FileNotFoundException: /storage/emulated/0/Datos.csv: open failed: EACCES (Permission denied)
.... //here the "at" statement
Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied)
答案 0 :(得分:1)
getFilesDir()
是您应用的私密内存。电子邮件应用无法访问它。
尝试其他位置,例如getExternalStorageDirectory()
或getExternalFilesDir()
。
此外,您需要在清单文件中请求WRITE_EXTERNAL_STORAGE
权限。
如果在运行时为用户编译Android 6及更高版本的请求,那么。