日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android文件选择器_Android存储空间的最佳实践(上)

發布時間:2025/3/19 Android 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android文件选择器_Android存储空间的最佳实践(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為了提高文件的規整程度并讓用戶可以更好地控制他們的文件,Android 10 為應用引入了名為 "分區存儲"?的新范式。分區存儲改變了應用在外置存儲中保存和訪問文件的方式,為了幫您遷移應用并支持分區存儲,我們概括了常見用例的最佳實踐并分享給大家。本文分為上下兩篇,分別為您介紹處理媒體文件和非媒體文件的用例和最佳實踐,供您參考。
  • 分區存儲

    https://developer.android.google.cn/training/data-storage#scoped-storage

處理媒體文件

這部分內容描述了處理媒體文件 (如視頻、圖片、音頻文件) 的一些常見用例,并概要說明了應用可以使用的方法。我們制作了一個簡單的圖片,列出了每種用例以及其在不同系統版本的實踐總結:

展示多個文件夾中的圖片和視頻文件

使用 query() API 查詢媒體集合。您可以通過調整 projection、 selection、 selectionArgs 與 sortOrder 參數來對媒體文件進行過濾和排序。

  • query()https://developer.android.google.cn/reference/android/content/ContentResolver#query(android.net.Uri,%20java.lang.String%5B%5D,%20java.lang.String,%20java.lang.String%5B%5D,%20java.lang.String,%20android.os.CancellationSignal)
  • 查詢媒體集合https://developer.android.google.cn/training/data-storage/shared/media#query-collection
展示特定文件夾內的文件和視頻使用以下方法:
  • 使用 "請求應用權限"?一文中描述的最佳實踐來請求 READ_EXTERNAL_STORAGE 權限。

  • 使用 MediaColumns.DATA 中的值來檢索媒體文件,其中包含了磁盤中媒體文件的絕對文件系統路徑。

    • 請求應用權限https://developer.android.google.cn/training/permissions/requesting
    • READ_EXTERNAL_STORAGEhttps://developer.android.google.cn/reference/android/Manifest.permission#READ_EXTERNAL_STORAGE
    • MediaColumns.DATAhttps://developer.android.google.cn/reference/kotlin/android/provider/MediaStore.MediaColumns#data
    訪問照片內的位置信息

    如果您的應用使用了分區存儲,可以遵循媒體存儲指南中的 "照片中的位置信息"?部分進行操作。

    注意:?就算您選擇停用分區存儲,在使用?MediaStoreAPI?訪問圖像并讀取未修改的位置信息時,您也需要請求?ACCESS_MEDIA_LOCATION權限。
    • 照片中的位置信息https://developer.android.google.cn/training/data-storage/shared/media#location-info-photos
    • MediaStorehttps://developer.android.google.cn/reference/android/provider/MediaStore
    • ACCESS_MEDIA_LOCATIONhttps://developer.android.google.cn/reference/android/Manifest.permission#ACCESS_MEDIA_LOCATION
    在單個操作中修改或刪除多個媒體文件

    您需要根據運行應用的 Android 版本來整合邏輯。

    在 Android 11 上運行

    使用以下方法:

  • 使用 MediaStore.createWriteRequest() 或 MediaStore.createTrashRequest() 為應用的寫入或刪除請求創建待定 intent,然后通過調用該 intent 提示用戶授予修改一組文件的權限。

  • 評估用戶的響應:

    • 如果獲得了權限,執行修改或刪除操作;

    • 如果未能獲得權限,向用戶解釋為什么您的應用需要此權限。

    詳細了解如何使用 Android 11 引入的這些方法執行批量操作。
    • MediaStore.createWriteRequest()https://developer.android.google.cn/reference/android/provider/MediaStore#createWriteRequest(android.content.ContentResolver,%20java.util.Collection%3Candroid.net.Uri%3E)
    • MediaStore.createTrashRequest()https://developer.android.google.cn/reference/android/provider/MediaStore#createTrashRequest(android.content.ContentResolver,%20java.util.Collection%3Candroid.net.Uri%3E,%20boolean)
    • 執行批量操作https://developer.android.google.cn/preview/privacy/storage#media-batch-operations

    在 Android 10 上運行

    如果您的應用目標 API 為 Android 10 (API level 29),請停用分區存儲并繼續使用 Android 9 及更低版本所使用的方法來執行這類操作。
    • 請停用分區存儲https://developer.android.google.cn/training/data-storage/use-cases#opt-out-scoped-storage

    在 Android 9 及更低版本上運行

    使用以下方法:

  • 使用 "請求應用權限" 一文中描述的最佳實踐來請求 WRITE_EXTERNAL_STORAGE 權限。

  • 使用 MediaStore API 來修改和刪除媒體文件。

    • WRITE_EXTERNAL_STORAGEhttps://developer.android.google.cn/reference/android/Manifest.permission#WRITE_EXTERNAL_STORAGE

    導入已存在的單個圖片

    如果您想要導入一張已存在的圖片 (例如將照片用于用戶個人資料),您的應用可以使用自己的 UI 或者系統圖片選擇器來執行這一操作。

    提供您自己的用戶界面

    使用以下方法:

  • 使用 "請求應用權限"?一文中描述的最佳實踐來請求 READ_EXTERNAL_STORAGE 權限。

  • 使用 query() API 查詢媒體集合。

  • 將結果顯示到您的 UI 上。

  • 使用系統選擇器

    使用 ACTION_GET_CONTENTintent 來要求用戶選擇要導入的圖片。如果您希望過濾系統選擇器向用戶展示的圖片類型,可以使用 setType()或 EXTRA_MIME_TYPES。
    • ACTION_GET_CONTENT

      https://developer.android.google.cn/reference/android/content/Intent#ACTION_GET_CONTENT

    • setType()

      https://developer.android.google.cn/reference/android/content/Intent#setType(java.lang.String)

    • EXTRA_MIME_TYPES

      https://developer.android.google.cn/reference/android/content/Intent#EXTRA_MIME_TYPES

    拍攝單張圖片

    當您想要拍攝一張圖片并用于您的應用時 (例如將照片用于用戶個人資料),使用 ACTION_IMAGE_CAPTUREintent 來要求用戶使用設備的相機拍攝一張照片。系統會將拍攝的照片存儲于?MediaStore.Images表中。?
    • ACTION_IMAGE_CAPTUREhttps://developer.android.google.cn/reference/android/provider/MediaStore#ACTION_IMAGE_CAPTURE
    • MediaStore.Imageshttps://developer.android.google.cn/reference/android/provider/MediaStore.Images

    與其他應用共享媒體文件

    使用 insert()方法將記錄直接加入 MediaStore。詳細信息,可以參閱媒體存儲指南中 "添加項目" 部分。
    • insert()

      https://developer.android.google.cn/reference/android/content/ContentResolver#insert(android.net.Uri,%20android.content.ContentValues)

    • 添加項目

      https://developer.android.google.cn/training/data-storage/shared/media#add-item

    與特定應用共享媒體文件

    使用 Android FileProvider組件,相關內容在 "設置文件分享"?指南中有描述。
    • 設置文件分享

      https://developer.android.google.cn/training/secure-file-sharing/setup-sharing

    從代碼或依賴庫中使用直接文件路徑訪問文件

    您需要根據運行應用的 Android 版本來整合邏輯。

    在 Android 11 上運行

    使用以下方法:

  • 使用 "請求應用權限"?一文中描述的最佳實踐來請求 READ_EXTERNAL_STORAGE 權限。

  • 使用直接文件路徑訪問文件。

  • 詳細信息,請參閱 "使用原始路徑訪問文件"。
    • 使用原始路徑訪問文件https://developer.android.google.cn/preview/privacy/storage#media-files-raw-paths

    在 Android 10 上運行

    如果您的應用目標 API 為 Android 10 (API level 29),請停用分區存儲并繼續使用 Android 9 及更低版本所使用的方法來執行這類操作。在 Android 9 及更低版本上運行使用以下方法:?
  • 使用 "請求應用權限"?一文中描述的最佳實踐來請求 WRITE_EXTERNAL_STORAGE 權限。
  • 使用直接文件路徑訪問文件。
  • 了解有關 Android 平臺文件存儲與訪問的詳細信息,請參閱以下資源:
    • 數據和文件存儲概覽

      https://developer.android.google.cn/training/data-storage

    • Android 存儲用例和最佳做法 - Android 官方中文文檔

      https://developer.android.google.cn/training/data-storage/use-cases?hl=zh-CN

    ? 推薦閱讀:

    ??Android自定義View基礎

    ? Android自定義View-視圖動畫

    ??Android自定義View-屬性動畫

    ? Android自定義View-路徑動畫

    ??Android自定義View-SVG動畫

    歡迎關注微信公眾號:Android技術堆棧

    總結

    以上是生活随笔為你收集整理的android文件选择器_Android存储空间的最佳实践(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。