最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

AndroidQ分區(qū)存儲權(quán)限變更及適配的實現(xiàn)

 更新時間:2020年06月23日 10:43:00   作者:閣樓貓  
這篇文章主要介紹了AndroidQ分區(qū)存儲權(quán)限變更及適配的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

分區(qū)存儲

在Android Q中引入了分區(qū)儲存功能,在外部存儲設備中為每個應用提供了一個“隔離存儲沙盒”。其他應用無法直接訪問應用的沙盒文件。由于文件是應用的私有文件,不再需要任何權(quán)限即可訪問和保存自己的文件。此變更并有助于減少應用所需的權(quán)限數(shù)量,同時保證用戶文件的隱私性。

權(quán)限變更

Android Q 更改了應用對設備外部存儲設備中的文件(如:/sdcard )的訪問方式。繼續(xù)使用 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 權(quán)限,只不過當擁有這些權(quán)限的時候,你只能訪問媒體文件,無法訪問其他文件。

在早先的beta版本中,Android需要申請?zhí)囟ǖ拿襟w權(quán)限 :READ_MEDIA_IMAGES, READ_MEDIA_VIDEO , READ_MEDIA_AUDIO, 但是在beta4中,這些權(quán)限被廢棄。

訪問私有文件

應用需要將文件存儲在應用的沙盒中,并且訪問這個文件夾無需權(quán)限。官方推薦應用在沙盒內(nèi)存儲文件的地址為Context.getExternalFilesDir()下的文件夾。
比如要獲得一張圖片

Context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)

訪問其他應用創(chuàng)建的文件

只有在滿足以下兩個條件時,您的應用才能訪問其他應用創(chuàng)建的文件:
1、 您的應用已獲得 READ_EXTERNAL_STORAGE 權(quán)限。

2、這些文件位于以下其中一個明確定義的媒體集合中:
照片:存儲在 MediaStore.Images 中。
視頻:存儲在 MediaStore.Video 中。
音樂文件:存儲在 MediaStore.Audio 中。

任何其他文件(包括“downloads”目錄下的文件),必須使用存儲訪問框架

注意:訪問外部存儲設備中的文件時會進入過濾視圖的應用不具有對 /sdcard/DCIM/IMG1024.JPG 等路徑的直接內(nèi)核訪問權(quán)限。要訪問此類文件,應用必須使用 MediaStore.openFile() 等方法。

卸載后保留應用的文件

文件存儲在應用私有目錄下,在卸載該應用后,系統(tǒng)會清除該應用的目錄中的所有文件(有點類似Android/data/xxx目錄)。有時我們要在卸載后保留這些文件,請將其保存到 MediaStore 中的某個目錄下。

選擇停用分區(qū)存儲

在Android Q設備上有兩種方式來讓分區(qū)存儲生效:

  • 以 Android 9 或更低版本為目標平臺 (Target SDK <=28)
  • 如果Target SDK > 28,請在manifest中添加android:requestLegacyExternalStorage=“true”

這樣就可以采用原有的存儲策略。以上方式不建議使用。
官方警告:明年,所有應用的主要平臺版本都需要分區(qū)存儲,無論其采用哪種目標 SDK 級別。

文件訪問權(quán)限摘要

文件位置 所需權(quán)限 訪問方法 卸載時是否刪除文件
應用私有目錄 getExternalFilesDir()
媒體集合(照片、視頻、音頻) READ_EXTERNAL_STORAGE(僅當訪問其他應用的文件時) MediaStore
下載內(nèi)容(文檔和電子書籍) 存儲訪問框架(加載系統(tǒng)的文件選擇器

您可以使用存儲訪問框架訪問上表中顯示的每個位置,而無需請求任何權(quán)限。

特定文件訪問適配

分享媒體文件

如果你的應用有分享照片和視頻需求。請使用 MediaStore存儲需要共享的文件。

如果您提供一組配套應用(例如短信應用和個人資料應用),請使用 content:// URI 設置文件共享。已經(jīng)建議將此工作流作為一項安全最佳做法

使用文檔

如果需要打開企業(yè)辦公文檔或打開另存為 EPUB 文件的圖書。
通過調(diào)用 ACTION_OPEN_DOCUMENT intent 能選擇要打開的文件, intent 會打開系統(tǒng)的文件選擇器應用。顯示應用所支持類型的文件,intent 中需要包含Intent.EXTRA_MIME_TYPES extra

GitHub 上的 ActionOpenDocument 示例說明了如何使用 ACTION_OPEN_DOCUMENT 打開文件。

訪問和修改媒體內(nèi)容

上面已經(jīng)介紹過了不再重復,需要使用MediaStore

更新其他應用的媒體文件

Android Q以前應用都不太關(guān)注其它用戶組訪問應用目錄權(quán)限,適配Android Q后你會接到廠商要求你限定用戶組訪問存儲目錄權(quán)限問題單。
要修改另一個應用保存到外部存儲設備的給定媒體文件,請捕獲平臺拋出的 RecoverableSecurityException。然后,您可以請求用戶授予您的應用對此特定內(nèi)容的寫入權(quán)限。

照片中的位置信息

我們拍攝的照片一般在Exif元數(shù)據(jù)中包含了位置信息,在Android Q 以前我們可以方便的獲取到圖片的位置信息,Android Q 會默認對您的應用隱藏此類信息。并且這種位置信息限制與適用于相機功能的限制不同。
如果您的應用需要訪問照片的位置信息,請完成以下步驟:

將新的 ACCESS_MEDIA_LOCATION 權(quán)限添加到應用清單中。

在 MediaStore 對象中調(diào)用setRequireOriginal(),在調(diào)用時傳入照片的 URI。

val photoUri = MediaStore.setRequireOriginal(photoUri)
  contentResolver.openInputStream(photoUri).use { stream ->
    ExifInterface(stream).run {
      // If lat/long is null, fall back to the coordinates (0, 0).
      val latLong = ?: doubleArrayOf(0.0, 0.0)
    }
  }

到此這篇關(guān)于AndroidQ分區(qū)存儲權(quán)限變更及適配的實現(xiàn)的文章就介紹到這了,更多相關(guān)AndroidQ分區(qū)存儲權(quán)限變更內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

皋兰县| 岳阳县| 长丰县| 犍为县| 光山县| 桂东县| 安宁市| 宣化县| 鱼台县| 运城市| 兴化市| 柳河县| 富平县| 定兴县| 紫阳县| 长寿区| 沙洋县| 德安县| 邯郸县| 盐源县| 三原县| 两当县| 中山市| 策勒县| 新兴县| 天镇县| 湟中县| 武隆县| 武川县| 江津市| 朝阳区| 柘城县| 鄂尔多斯市| 温州市| 巴中市| 鸡西市| 灵山县| 苗栗县| 江安县| 天祝| 惠东县|