第一步:
在Androidmanifest中声明FileProvider
···
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="包名.fileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_path" />
</provider>
···
第二步:
在xml文件中新建一个名为 file_path.xml 的文件,内容如下:
···
<?xml version="1.0" encoding="utf-8"?>
<paths>
<files-path
name="name"
path="/" />
<external-files-path
name="name"
path="/" />
<root-path
name="name"
path="/" />
<external-path
name="external_storage_root"
path="." />
<external-path
name="app_update_external"
path="/" />
<external-cache-path
name="app_update_cache"
path="/" />
</paths>
···
第三步:
找到你需要分享的文件然后分享:
···
File file = new File(path);//需要分享文件
Uri uriForFile = FileProvider.getUriForFile(mContext,
"包名.fileProvider", file);//通过file provider拿到可供外部读取的URI链接
Intent intent1 = new Intent(Intent.ACTION_SEND);//设置意图为ACTION_SEND
intent1.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//授权外部应用通过URI读取你的File(非常重要)
intent1.putExtra(Intent.EXTRA_STREAM,uriForFile);//Intent.EXTRA_STREAM分享一个文件流,uriForFile文件的URI
intent1.setType("application/*");
startActivity(Intent.createChooser(intent1,"选择分享"));//创建分享选择器
···
完美!!!
网友评论