android建立檔案分享

2021-07-04 08:24:53 字數 2011 閱讀 3140

編寫:jdneo - 原文:

為了將檔案安全地從我們的應用程式共享給其它應用程式,我們需要對自己的應用進行配置來提供安全的檔案控制代碼(content uri的形式)。android的fileprovider元件會基於在xml檔案中的具體配置為檔案建立content uri。本課將介紹如何在應用程式中新增fileprovider的預設實現,以及如何指定要共享的檔案。

note:

fileprovider類隸屬於v4 support library庫。關於如何在應用程式中包含該庫,請參考:support library setup。

為了給應用程式定義乙個fileprovider,需要在manifest清單檔案中定義乙個entry,該entry指明了需要使用的建立content uri的authority。此外,還需要乙個xml檔案的檔名,該xml檔案指定了我們的應用可以共享的目錄路徑。

下例展示了如何在清單檔案中新增標籤,來指定fileprovider類,authority及xml檔名:

xmlns:android=""

...>

android:name="android.support.v4.content.fileprovider"

android:granturipermissions="true"

android:exported="false">

android:name="android.support.file_provider_paths"

android:resource="@xml/filepaths" />

provider>

...manifest>

下的指向了乙個xml檔案,該檔案指定了我們希望共享的目錄路徑。「android:resource」屬性欄位是這個檔案的路徑和名字(無「.xml」字尾)。該檔案的內容將在下一節討論。

一旦在manifest清單檔案中為自己的應用新增了fileprovider,就需要指定我們希望共享檔案的目錄路徑。為指定該路徑,首先要在「res/xml/」下建立檔案「filepaths.xml」。在這個檔案中,為每乙個想要共享目錄新增乙個xml標籤。下面的是乙個「res/xml/filepaths.xml」的內容樣例。這個例子也說明了如何在內部儲存區域共享乙個「files/」目錄的子目錄:

path="images/"

name="myimages" />

paths>

在這個例子中,標籤共享的是在我們應用的內部儲存中「files/」目錄下的目錄。「path」屬性字段指出了該子目錄為「files/」目錄下的子目錄「images/」。「name」屬性字段告知fileprovider在「files/images/」子目錄中的檔案的content uri新增路徑分段(path segment)標記:「myimages」。

標籤可以有多個子標籤,每乙個子標籤用來指定不同的共享目錄。除了標籤,還可以使用來共享位於外部儲存的目錄;另外,標籤用來共享在內部快取目錄下的子目錄。更多關於指定共享目錄子標籤的知識請參考:fileprovider。

note: xml檔案是我們定義共享目錄的唯一方式,不可以用**的形式新增目錄。

現在我們有乙個完整的fileprovider宣告,它在應用程式的內部儲存中「files/」目錄或其子目錄下建立檔案的content uri。當我們的應用為乙個檔案建立了content uri,該content uri將會包含下列資訊:

例如,如果本課的例子定義了乙個fileprovider,然後我們需要乙個檔案「default_image.jpg」的content uri,fileprovider會返回如下uri:

**:

Android 建立資料夾

如果要在手機上建立乙個資料夾,然後往裡面儲存一些檔案,首先得考慮使用者有沒有sdcard,如果有就在sdcard上建立乙個指定的資料夾,如果沒有則在你的工程所在的目錄 data data 你的包名 下建立資料夾。用到的方法是 首先判斷sdcard是否插入 string status environm...

Android建立資料夾和檔案

1 電子證據存放基本路徑 2private static string basepath 3 電子證據存放根路徑 4private static string evidencepath 5 基本存放路徑 6private static string imagebasepath 1 2 1 判斷sd卡...

android建立資料夾和檔案

這幾天做乙個功能需要在手機上建立乙個資料夾,然後往裡面儲存一些檔案,首先得考慮使用者有沒有sdcard,如果有就在sdcard上建立乙個指定的資料夾,如果沒有則在你的工程所在的目錄 data data 你的包名 下建立資料夾。用到的方法是 首先判斷sdcard是否插入 string status e...