欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

分區(qū)存儲(chǔ)

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

權(quán)限變更

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

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

訪問(wèn)私有文件

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

Context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)

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

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

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

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

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

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

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

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

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

  • 以 Android 9 或更低版本為目標(biāo)平臺(tái) (Target SDK <=28)
  • 如果Target SDK > 28,請(qǐng)?jiān)趍anifest中添加android:requestLegacyExternalStorage=“true”

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

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

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

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

特定文件訪問(wèn)適配

分享媒體文件

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

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

使用文檔

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

GitHub 上的 ActionOpenDocument 示例說(shuō)明了如何使用 ACTION_OPEN_DOCUMENT 打開(kāi)文件。

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

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

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

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

照片中的位置信息

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

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

在 MediaStore 對(duì)象中調(diào)用setRequireOriginal(),在調(diào)用時(shí)傳入照片的 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ū)存儲(chǔ)權(quán)限變更及適配的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)AndroidQ分區(qū)存儲(chǔ)權(quán)限變更內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

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

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

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

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

    移動(dòng)端使用CSS或JS判斷橫屏和豎屏的講解

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

    Android Studio Gradle依賴沖突解決方法

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

    Android入門之bindService的用法詳解

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

    Android編程之監(jiān)聽(tīng)器的實(shí)現(xiàn)方法

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

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

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

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

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

最新評(píng)論