亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

分區(qū)存儲

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

權(quán)限變更

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

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

訪問私有文件

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

Context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)

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

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

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

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

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

卸載后保留應(yīng)用的文件

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

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

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

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

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

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

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

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

特定文件訪問適配

分享媒體文件

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

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

使用文檔

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

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

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

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

更新其他應(yīng)用的媒體文件

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

照片中的位置信息

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

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

在 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)文章

  • Android編程監(jiān)聽網(wǎng)絡(luò)連接狀態(tài)改變的方法

    Android編程監(jiān)聽網(wǎng)絡(luò)連接狀態(tài)改變的方法

    這篇文章主要介紹了Android編程監(jiān)聽網(wǎng)絡(luò)連接狀態(tài)改變的方法,基于BroadcastReceiver實現(xiàn)針對網(wǎng)絡(luò)連接狀態(tài)的監(jiān)聽功能,需要的朋友可以參考下
    2017-06-06
  • Android開發(fā)之StackView用法和遇到的坑分析

    Android開發(fā)之StackView用法和遇到的坑分析

    這篇文章主要介紹了Android開發(fā)之StackView用法和遇到的坑,結(jié)合實例形式分析了Android StackView圖片操作用法及常見問題解決方法,需要的朋友可以參考下
    2019-03-03
  • Kotlin如何使用類似C#的yield功能詳解

    Kotlin如何使用類似C#的yield功能詳解

    在語句中使用 yield 關(guān)鍵字,則指示在的方案、運算符或 get 訪問器是迭代器。下面這篇文章主要給大家介紹了關(guān)于Kotlin如何使用類似C#的yield功能的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧
    2018-06-06
  • Android實現(xiàn)截屏功能

    Android實現(xiàn)截屏功能

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)截屏功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 移動端使用CSS或JS判斷橫屏和豎屏的講解

    移動端使用CSS或JS判斷橫屏和豎屏的講解

    今天小編就為大家分享一篇關(guān)于移動端使用CSS或JS判斷橫屏和豎屏的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Android Studio Gradle依賴沖突解決方法

    Android Studio Gradle依賴沖突解決方法

    這篇文章主要給大家介紹了關(guān)于Android Studio Gradle依賴沖突解決的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Android Studio具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Android入門之bindService的用法詳解

    Android入門之bindService的用法詳解

    indService大家可以認(rèn)為它是和Android的一個共生體。即這個service所屬的activity如果消亡那么bindService也會消亡。本文將通過簡單的例子帶大家了解一下bindService的用法,感興趣的可以了解一下
    2022-12-12
  • Android編程之監(jiān)聽器的實現(xiàn)方法

    Android編程之監(jiān)聽器的實現(xiàn)方法

    這篇文章主要介紹了Android編程之監(jiān)聽器的實現(xiàn)方法,以實例形式較為詳細(xì)的分析了Android監(jiān)聽器的創(chuàng)建、注冊及相關(guān)使用技巧,需要的朋友可以參考下
    2015-11-11
  • Android Jetpack組件中LiveData的優(yōu)劣

    Android Jetpack組件中LiveData的優(yōu)劣

    LiveData是Jetpack組件的一部分,更多的時候是搭配ViewModel來使用,相對于Observable,LiveData的最大優(yōu)勢是其具有生命感知的,換句話說,LiveData可以保證只有在組件(?Activity、Fragment、Service)處于活動生命周期狀態(tài)的時候才會更新數(shù)據(jù)
    2023-04-04
  • Android實現(xiàn)屏幕鎖定源碼詳解

    Android實現(xiàn)屏幕鎖定源碼詳解

    本篇文章主要介紹了Android實現(xiàn)屏幕鎖定源碼詳解,屏幕鎖定是一個很有用的功能,有需要的可以了解一下。
    2016-10-10

最新評論