先在AndroidManifest.xml里声明provider
<provider
android:authorities="package.fileprovider"
android:name="androidx.core.content.FileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider>
在res下创建xml包,在xml包下创建file_paths.xml
这里之前我用网上的办法使用external-path或者files-path都会报错
报错内容为
Failed to find configured root that contains /storage/emulated/0/xxx
后面百度了说用root-path就正常了,(这里我的文件是建在sdcard目录下)
<paths>
<root-path
name="my_images"
path="sdcard/filename"/>
</paths>
在代码里使用
File fileDir = new File(Environment.getExternalStorageDirectory() +"/filename");
if (!fileDir.exists()) {
fileDir.mkdirs();
}
File file = new File(fileDir,filetype);//filetype为文件名,如图片则为xxx.jpeg
String mPath = file.getAbsolutePath();//获取文件路径
Uri uri = FileProvider.getUriForFile(getContext(),"package.fileprovider",file);
intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);
这样一套下去程序暂时是没问题了。