安卓7 0檔案路徑適配 FileProvider

2021-09-18 01:30:48 字數 2195 閱讀 9581

原先有適配過,但是當時就copy能用就行了。最近在寫輪子工具,就再次查了下資料,就順便整個都了解一下,記錄下來。

建立provider資料

...		

...

引數

說明android:name

你可以使用v4包提供的fileprovider或者自定義的只需要在name申明就好了,一般使用系統的就足夠了。

android:authorities

類似schema,命名空間之類。

android:exported

false表示我們的provider不需要對外開放。

android:granturipermissions

申明為true,你才能獲取臨時共享許可權。

在res中建立配置檔案

按上面的名字我們需要建立乙個file_paths路徑檔案

**如下

<?xml version="1.0" encoding="utf-8"?>
以上name是代表生成的新uri的時候的拼接名稱,path代表前面引數路徑後拼接的內容

具體說明如下

引數說明

files-path

呼叫context.getfilesdir()路徑下的檔案 例/data/user/0/包名/files

cache-path

呼叫context.getcachedir()路徑下的檔案 例/data/user/0/包名/cache

external-cache-path

呼叫context.getexternalcachedir()路徑下的檔案 例/storage/emulated/0/android/data/包名/cache

external-files-path

呼叫context.getexternalfilesdir(string)路徑下的檔案 例/storage/emulated/0/android/data/包名/files/music

external-path

呼叫environment.getexternalstoragedirectory()路徑下的檔案 例/storage/emulated/0

uri api24以上的呼叫

在7.0(api24)之前直接開啟檔案**如下

string mimetype = gettypefromsuffix(file);

uri uri = uri.fromfile(file);

if (mimetype != null)

在7.0(api24)以後需要用新的方法 修改如下

string mimetype = gettypefromsuffix(file);

uri uri = uri.fromfile(file);

if (mimetype != null) else

intent.setdataandtype(uri, mimetype);

context.startactivity(intent);

}

其中fileproviderstring fileprovider = ".fileprovider";其實這段就是最早上面清單檔案的android:authorities內的值

加入的兩個flags是intent.flag_grant_read_uri_permission(臨時讀取許可權)和intent.flag_grant_write_uri_permission(臨時寫入許可權)

統一出現的gettypefromsuffix(file)方法是用來獲取檔案的字尾生成mimetype讓系統開啟對應的檔案工具

android7.0適配總結

谷歌中國 - android 7.0 行為變更

安卓6 0 檔案儲存許可權管理

由於安卓6.0更新了許可權管理,使用最新的sdk編譯的時候,快取到自定義的目錄下出現問題,因為沒有獲取對應的許可權,6.0以前的系統不需要獲取許可權,最快的方式是使用官方推薦的快取位址 不推薦 public static string path environment.getexternalstor...

安卓學習筆記 9 檔案共享到其他應用

在intent中,我們可以使用putextra string,bundle 來向其他的activity傳遞資料,其內部提供了如下的幾個型別 extra alarm count用於告訴應用程式正在被呼叫的應用程式有多少個正在等待的警報 extra bcc一串盲文複製的e mail郵件位址 extra ...

Node14 檔案路徑

node.js中的檔案路徑主要有以下幾種 dirname filenameproces.cwd 其中前三個是絕對路徑,後兩個是相對路徑 可以通過path.resolve轉換為絕對路徑 我現在的目錄結構是這樣的 d projects path test path.jspath.js const pat...