android 7.0以上获取文件路径使用FileProvider

一、先在AndroidManifest.xml文件中添加

<manifest>
	...
	<application>
	...
	<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_paths" /> 
	</provider>
	...
	</application>
</manifest>

二、在res目录下新建xml/file_paths

//每个节点都支持两个属性:name+path
//path:需要临时授权访问的路径(.代表所有路径) 
//name:就是你给这个访问路径起个名字
<?xml version="1.0" encoding="utf-8"?>
<paths  xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="app" path="" />//调用Environment.getExternalStorageDirectory()路径下的文件
    <files-path name="app" path="" />//调用context.getFilesDir()路径下的文件
    <cache-path name="app" path="" />//调用context.getCacheDir()路径下的文件
    <external-cache-path name="app" path="" />//调用context.getExternalCacheDir()路径下的文件
    <external-files-path name="app" path="" />//调用context.getExternalFilesDir(String)路径下的文件
</paths>

三、在使用文件路径的地方做判断

        Uri uri;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            uri = FileProvider.getUriForFile(activity, 	你的包名 + ".fileProvider", file);
        } else {
         
            uri = Uri.fromFile(file);
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章