適配7 0以後的Android檔案分享

2021-08-21 06:58:49 字數 1744 閱讀 1392

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 ...