我把它放在清单
中<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="true"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
在Res中创建路径Xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>
Java代码如下:
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("application/pdf");
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Sheep Drench Calculations " );
shareIntent.putExtra(Intent.EXTRA_TEXT, "Please find attached the report generated from the Sheep Drench App");
Uri pdfURI = FileProvider.getUriForFile(EmailSend.this,
BuildConfig.APPLICATION_ID + ".provider",
(new File(pdfDir ,"ResultPDF.pdf")));
shareIntent.putExtra(Intent.EXTRA_STREAM, (pdfURI));
startActivity(shareIntent);
更多java代码:
File pdfDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Dir");
if (!pdfDir.exists()) {
pdfDir.mkdir();
}
它创建了目录但是当它进入目录内部时它通过异常没有这样的目录或文件。 我试过这个从文件发送电子邮件但问题仍然存在..导演没有创建......
答案 0 :(得分:1)
尝试将.mkdir()更改为.mkdirs()并确保您在清单中写入外部存储权限