7.0以後,谷歌開始收緊android應用許可權
對於面向 android 7.0 的應用,android 框架執行的 strictmode api 政策禁止在您的應用外部公開 file:// uri。如果一項包含檔案 uri 的 intent 離開您的應用,則應用出現故障,並出現 fileuriexposedexception 異常。**:要在應用間共享檔案,您應傳送一項 content:// uri,並授予 uri 臨時訪問許可權。進行此授權的最簡單方式是使用 fileprovider 類。如需了解有關許可權和共享檔案的詳細資訊,請參閱共享檔案。
public
static
void
sharecontent(context context, string filename) else
intent intent = new intent(intent.action_send);
intent.putextra(intent.extra_stream, uri);
intent.settype("image/*");
//在新任務窗體中進行分享
context.startactivity(intent);
}
其他配置:
androidmanifest.xml
android:authorities="com.painttool.file_provider"
android:name="android.support.v4.content.fileprovider"
android:exported="false"
android:granturipermissions="true">
android:name="android.support.file_provider_paths"
android:resource="@xml/filepaths"/>
provider>
在xml資料夾下新建filepaths.xml
<?xml version="1.0" encoding="utf-8"?>
path="."
name="external_storage_root" />
path>
在res目錄下建立xml/file_paths檔案,只有在file_paths中配置的目錄下的檔案才可以在應用間共享
<?xml version="1.0" encoding="utf-8"?>
name="external-path"
path="apk/" />
name="cache-path"
path="." />
name="files-path"
path="." />
paths>
external-path 對應environment.getexternalstoragedirectory()
cache-path對應 getcachedir()
files-path對應 getfilesdir()
path指定對應目錄下的子目錄, path="." 表示該目錄下所有子目錄
Android7 0以後跨應用
public static void installapk context context,file file catch exception e 複製 複製 說明 granturipermissions 必須是true,表示授予 uri 臨時訪問許可權 exported 必須是false reso...
android7 0適配 app版本更新
android8.0適配鏈結 以下 可以直接使用 第一步,配置清單檔案 com.hibabypsy.provider android exported false android granturipermissions true xml file paths 中紅色部分為包名,替換成自己的即可。藍色...
安卓7 0檔案路徑適配 FileProvider
原先有適配過,但是當時就copy能用就行了。最近在寫輪子工具,就再次查了下資料,就順便整個都了解一下,記錄下來。建立provider資料 引數 說明android name 你可以使用v4包提供的fileprovider或者自定義的只需要在name申明就好了,一般使用系統的就足夠了。android ...