如要安全地提供應用程式檔案給其他應用程式,您必須將應用程式設為提供
    檔案的安全控制代碼,採內容 URI 格式。Android
    FileProvider 元件會產生內容 URI
    產生的檔案。本課程將說明如何新增預設值
    在應用程式中實作 FileProvider,以及如何
    指定要提供給其他應用程式的檔案
  注意:FileProvider 類別屬於
  AndroidX 核心程式庫。資訊
  如果想在應用程式中加入這個程式庫,請參閱
  宣告依附元件。
指定 FileProvider
    定義應用程式的 FileProvider 時,您必須在
    資訊清單。此項目指定使用產生內容 URI 的權限,以及
    指定應用程式可共用目錄的 XML 檔案名稱。
    下列程式碼片段說明如何將
    <provider> 元素,指定
    FileProvider 類別、權威和
    XML 檔案名稱:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> <application ...> <provider android:name="androidx.core.content.FileProvider" android:authorities="com.example.myapp.fileprovider" android:grantUriPermissions="true" android:exported="false"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths" /> </provider> ... </application> </manifest>
    在這個範例中,android:authorities 屬性會指定 URI 授權數量
    您要用於
    FileProvider。
    在這個範例中,主機名稱為 com.example.myapp.fileprovider。為自己
    指定應用程式的主機名稱
    具有「fileprovider」字串的 android:package 值。瞭解詳情
    有關權威值,請參閱
    內容 URI 和
    android:authorities 屬性。
    應用程式的 <meta-data> 子元素
    <provider> 指向一個 XML 檔案,用於指定您想要存取的目錄
    分享。android:resource 屬性是檔案的路徑和名稱,但不含
    .xml 副檔名。下一節將說明此檔案的內容。
指定可共用的目錄
    將 FileProvider 加入應用程式資訊清單後,
    您需要指定包含要共用檔案的目錄。如要指定
    請先在 res/xml/ 中建立 filepaths.xml 檔案
    子目錄在這個檔案中,新增以下項目的 XML 元素來指定目錄:
    每個目錄以下程式碼片段為
    res/xml/filepaths.xml。該程式碼片段也示範如何共用子目錄
    位於內部儲存空間區域的 files/ 目錄:
<paths> <files-path path="images/" name="myimages" /> </paths>
    在這個範例中,<files-path> 標記共用了
    應用程式內部儲存空間的 files/ 目錄。path 屬性
    共用 files/ 的 images/ 子目錄。name
    屬性會指示 FileProvider 新增路徑區段
    將 myimages 設為 files/images/ 子目錄中檔案的內容 URI。
    <paths> 元素可包含多個子項,每個子項都指定不同的
    要共用目錄除了 <files-path> 元素外,您還可以
    使用 <external-path> 元素共用外部儲存空間中的目錄。
    <cache-path> 元素,用於共用內部快取中的目錄
    目錄。如要進一步瞭解指定共用目錄的子元素,請參閱
    FileProvider 參考說明文件。
注意:XML 檔案是唯一可用來指定目錄的方式 分享;您無法透過程式輔助方式新增目錄
    現在,您已擁有 FileProvider 的完整規格
    可針對應用程式 files/ 目錄中的檔案產生內容 URI
    內部儲存空間或 files/ 子目錄中的檔案。應用程式產生
    檔案的內容 URI,其中包含
    <provider> 個元素 (com.example.myapp.fileprovider),
    myimages/ 路徑,以及檔案名稱。
    舉例來說,如果您根據FileProvider
    您必須將檔案的內容 URI
    default_image.jpg,FileProvider 會傳回
    存取 URI:
content://com.example.myapp.fileprovider/myimages/default_image.jpg
如需其他相關資訊,請參閱:
