Android?FileProvider使用教程
Android基礎(chǔ)--FileProvider
Android 7.0之前,文件的Uri以file:///形式提供給其他app訪問。
Android 7.0之后,為了安全起見,file:///形式的Uri不能正常訪問,官方提 供了FileProvider,F(xiàn)ileProvider生成的Uri會以content://的形式分享給其他app使用。
那如何使用FileProvider?
在manifest 中聲明provider
<provider
android:authorities="${packagename}.provider"
android:name="com.flx.cn.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_provider" />
</provider>
- authorities:相當(dāng)于一個用于認證的暗號,在分享文件生成Uri時,會通過它的值生成對應(yīng)的Uri。
- exported:的值為false,表示該FileProvider只能本應(yīng)用使用
- meta-data:別的配置信息
- grantUriPermissions:讓接收端的app臨時有權(quán)限進行操作了。
設(shè)置共享目錄
<?xml version="1.0" encoding="utf-8"?>
<resources>
<paths>
<!--<root-path/> 代表設(shè)備的根目錄new File("/");-->
<root-path
name = ""
path=""/>
<!-- Context.getFilesDir() + "/path/" -->
<files-path
name="my_files"
path="test/"/>
<!-- Context.getCacheDir() + "/path/" -->
<cache-path
name="my_cache"
path="test/"/>
<!-- Context.getExternalFilesDir(null) + "/path/" -->
<external-files-path
name="external-files-path"
path="test/"/>
<!-- Context.getExternalCacheDir() + "/path/" -->
<external-cache-path
name="name"
path="test/" />
<!-- Environment.getExternalStorageDirectory() + "/path/" -->
<external-path
name="my_external_path"
path="test/"/>
<!-- Environment.getExternalStorageDirectory() + "/path/" -->
<external-path
name="files_root"
path="Android/data/<包名>/"/>
<!-- path設(shè)置為'.'時代表整個存儲卡 Environment.getExternalStorageDirectory() + "/path/" -->
<external-path
name="external_storage_root"
path="."/>
</paths>
</resources>
最終生成的代碼效果
以第二個為例:
content://com.flx.cn.fileprovider/my_files/filexxx.jpg
生成Content Uri文件,供其他app使用
File filePath = new File(Context.getFilesDir(), "my_log"); File newFile = new File(filePath, "my_log.log"); // 生成Uri Uri contentUri = FileProvider.getUriForFile(getContext(), "com.flx.cn.fileprovider", newFile);
授權(quán),一般就讀取和寫入2種權(quán)限,并分享
// 這里用的是發(fā)送文件。 Intent intent = new Intent(Intent.ACTION_SEND); // 設(shè)置讀寫權(quán)限 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); //Uri傳入Intent intent.putExtra(Intent.EXTRA_STREAM, contentUri); startActivity(intent)
到此這篇關(guān)于Android FileProvider使用教程的文章就介紹到這了,更多相關(guān)Android FileProvider內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android6.0 動態(tài)權(quán)限機制深入講解
這篇文章主要給大家介紹了關(guān)于Android6.0 動態(tài)權(quán)限機制的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
解決Bitmap通過getWidth和getHeight獲取尺寸不符的問題
這篇文章主要介紹了解決Bitmap通過getWidth和getHeight獲取尺寸不符的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Android 事件觸發(fā)機制的深入學(xué)習(xí)
這篇文章主要介紹了 Android 事件觸發(fā)機制的深入學(xué)習(xí)的相關(guān)資料,需要的朋友可以參考下2017-06-06
Android studio 4.1打包失敗和插件錯誤提示的解決
這篇文章主要介紹了Android studio 4.1打包失敗和插件錯誤提示的解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Android自定義WheelView地區(qū)選擇三級聯(lián)動
這篇文章主要為大家詳細介紹了Android自定義WheelView地區(qū)選擇三級聯(lián)動的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02
Android 5.1 WebView內(nèi)存泄漏問題及快速解決方法
下面小編就為大家?guī)硪黄狝ndroid 5.1 WebView內(nèi)存泄漏問題及快速解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05
Android Studio 4.0新特性及升級異常問題的解決方案
這篇文章主要介紹了Android Studio 4.0新特性及升級異常的相關(guān)問題,本文給大家分享解決方案,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06

