android文件选择器_Android存储空间的最佳实践(上)
分區存儲
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 提示用戶授予修改一組文件的權限。
評估用戶的響應:
如果獲得了權限,執行修改或刪除操作;
如果未能獲得權限,向用戶解釋為什么您的應用需要此權限。
- 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 及更低版本上運行使用以下方法:?數據和文件存儲概覽
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存储空间的最佳实践(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: postgresql 创建用户_Liun
- 下一篇: python可以调试吗_调试-有什么好的