一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Android(Q)10 上的分區(qū)外部存儲訪問

jf_78858299 ? 來源:GSYTech ? 作者:戀貓de小郭 ? 2023-05-26 11:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Android(API 29)10 發(fā)布至今已經(jīng)有不少設(shè)備完成升級,如:***小米9、Redmi K20pro、華為 P30pro/Mate30pro 、榮耀 v30/v20、Oppo Reno、ONnePlus 7T、谷歌 Pixel ***等都已經(jīng)升級到 Android 10 的支持,不少應(yīng)用市場也要求應(yīng)用需要針對 Android 10 進(jìn)行適配,其中最大的變更之一就是 scoped storage。

在針對目前 小米、華為、Pixel 的幾臺 Android 10 手機(jī)做了測試,在不設(shè)置 requestLegacyExternalStorage 的前提下得到結(jié)論(官方還沒完全開啟限制的前提):

  • 1、targetSDK 用 28 編譯的在 Android 10 上還是可以讀取到全部文件, 之后覆蓋安裝一個(gè)使用 targetSDK 29 的,還能繼續(xù)可以訪問全路徑。
  • 2、卸載后直接用 targetSDK 29 編譯的會讀取不到。

圖片

而官方明確表示:

明年(2020),主要平臺版本將要求所有應(yīng)用都使用分區(qū)存儲,無論應(yīng)用的目標(biāo) SDK 級別是多少。因此,您應(yīng)該提前確保您的應(yīng)用能夠使用分區(qū)存儲。為此,請確保針對搭載 Android 10(API 級別 29)及更高版本的設(shè)備啟用了該行為。

所以不管是使用 requestLegacyExternalStorage 還是降低 targetSDK 都無法在接下來2020 年的 Android(API 29)10 新版更新中被豁免。

雖然作為 Android 開發(fā)會因?yàn)闊o法對用戶存儲目錄“為所欲為”而頭痛,但是作為用戶卻是感覺欣喜的。

因?yàn)殚L期以來 Android 用戶的本地存儲目錄都十分雜亂,開發(fā)者只要申請一次權(quán)限就可以“為所欲為”地創(chuàng)建和讀取本地存儲,雖然谷歌在 Android 4.4(API 19))引入了存 SAF(Storage Access Framework) , 但是開發(fā)者大部分時(shí)候都選擇無視。

我甚至想要一個(gè)系統(tǒng)標(biāo)志出這個(gè)文件是誰創(chuàng)建的 API ,因?yàn)樽罱龅竭@個(gè)問題卻沒有頭緒: 為什么相冊里總是多出一張空白圖片,刪了后不久又重現(xiàn)?

官方解讀

為了讓用戶更好地管理自己的文件并減少混亂,Android 10(API 29)開始應(yīng)用在默認(rèn)情況下會被要求使用 scoped storage(即分區(qū)存儲),也就是說應(yīng)用只能看到自己專有的目錄(Context.getExternalFilesDir())以及特定類型的媒體文件。

注意這個(gè)是強(qiáng)制性的,但是會有緩沖期,官方明確額表示,除非你的應(yīng)用真的有強(qiáng)烈需要訪問專有目錄以及 MediaStore 之外的文件,否則最好使用分區(qū)存儲。

使用分區(qū)存儲的應(yīng)用對自己創(chuàng)建的文件始終擁有讀/寫權(quán)限,無論文件是否位于應(yīng)用的專有目錄內(nèi) 。這說明了默認(rèn)分區(qū)存儲內(nèi)的文件也只有應(yīng)用自己能看到,就像是沙盒內(nèi),同時(shí) getExternalFilesDir()下的文件會隨著應(yīng)用卸載而清除。

也就是說應(yīng)用可以無需申請任何權(quán)限使用 getExternalFilesDir() 、 MediaStoreSAF 讀寫文件, 當(dāng)然如果使用 MediaStore 讀取其他應(yīng)用的媒體集合時(shí),是需要 READ_EXTERNAL_STORAGE 。

MediaStore 中支持的類型有:

  • 照片:存儲在 MediaStore.Images 中。
  • 視頻:存儲在 MediaStore.Video 中。
  • 音頻文件:存儲在 MediaStore.Audio 中。

另外還有其他的限制,比如:

  • 應(yīng)用沒有 ACCESS_MEDIA_LOCATION 權(quán)限,那么訪問到的媒體資源中的 Exif 元數(shù)據(jù)會被修改.
  • 使用 MediaStore.Files 也僅顯示照片、視頻和音頻文件,例如不會顯示表中的 PDF 文件。

總結(jié)起來結(jié)論就是:

  • 1、獲取系統(tǒng)相冊、視頻,圖片等需要通過 SAF ,利用 ContentResolverCursor 來提供。
  • 2、訪問公有目錄也需要通過 MediaStoreContentResolver ,比如保存圖片到外部公共存儲,拷貝文件到 Download 目錄等等。
  • 3、比如 new File(path).createNewFile(); 等的判斷在公共目錄下不能再用了。

簡單來說就是:應(yīng)用在自己的沙盒內(nèi)可以“為所欲為”,通過 MediaStore 可以分類整理文件,通過 SAF 可以訪問其他應(yīng)用的公共媒體文件。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3972

    瀏覽量

    130101
  • 華為
    +關(guān)注

    關(guān)注

    216

    文章

    35192

    瀏覽量

    255706
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1593

    瀏覽量

    63930
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何在Ubuntu Linux釋放/boot分區(qū)中的空間

    在Ubuntu Linux,/boot分區(qū)是用于存儲啟動相關(guān)的文件的。隨著時(shí)間的推移,這個(gè)分區(qū)可能會變滿,導(dǎo)致系統(tǒng)無法安裝新的內(nèi)核和更新。本文將介紹如何釋放/boot
    的頭像 發(fā)表于 11-28 10:04 ?1343次閱讀

    Android中數(shù)據(jù)存儲的介紹和使用

    APP 在外部存儲的目錄,其目錄為 Android/data//。在訪問該目錄時(shí), app 不需要申請讀寫
    發(fā)表于 09-19 09:05

    如何選擇DSP芯片的外部存儲器?

    如何選擇DSP芯片的外部存儲器?DSP的速度較快,為了保證DSP的運(yùn)行速度,外部存儲器需要具有一定的速度,否則DSP訪問
    發(fā)表于 04-07 08:45 ?2120次閱讀

    Android手機(jī)的輕量級訪問控制

    以A ndroid 手機(jī)為平臺, 提出了一種適用于Android 手機(jī)的訪問控制方法, 該方法在Android手機(jī)的內(nèi)核中增加訪問控制模塊, 并根據(jù)手機(jī)用戶定制的
    發(fā)表于 04-17 15:06 ?44次下載
    <b class='flag-5'>Android</b>手機(jī)的輕量級<b class='flag-5'>訪問</b>控制

    解讀片RAM和外部RAM訪問速度的差異問題

    有些技術(shù),比如總線,看起來它和一般程序員關(guān)系不大。但它卻串聯(lián)起很多問題:為什么片RAM和外部RAM訪問速度有差異;為什么CPU訪問外部RA
    發(fā)表于 10-31 14:17 ?6764次閱讀

    簡述 Stratix 10 外部存儲器接口作用

    Stratix 10外部存儲器接口指南
    的頭像 發(fā)表于 06-20 04:46 ?2857次閱讀
    簡述 Stratix <b class='flag-5'>10</b> <b class='flag-5'>外部</b><b class='flag-5'>存儲</b>器接口作用

    什么是Swap分區(qū) NVMe如何使用Swap分區(qū)

    NVMe是固態(tài)存儲時(shí)代的下一個(gè)階段,它提高了SSD和網(wǎng)絡(luò)其他存儲設(shè)備的性能。如今,越來越多的服務(wù)器開始支持NVMe,IT人員是時(shí)候考慮Swap分區(qū)(交換區(qū))的使用問題,來最大限度地利
    發(fā)表于 03-03 11:27 ?4393次閱讀

    Google官方宣布:將推出的Android Q 將被命名為 Android 10

    PingWest品玩8月23日訊,今日,Google官方宣布,將結(jié)束以“甜點(diǎn)”命名Android系統(tǒng)的方式,即將推出的Android Q 將被命名為 Android
    的頭像 發(fā)表于 08-23 10:27 ?3202次閱讀

    訪問外部SDRAM為例來說明降低外部存儲系統(tǒng)功耗的方法

    為了降低DSP外部SDRAM存儲系統(tǒng)的功耗,針對DSP訪問片外SDRAM的功耗來源特點(diǎn),提出了基于總線利用率動態(tài)監(jiān)測的讀寫歸并方案。該方案動態(tài)監(jiān)測外部
    發(fā)表于 12-02 15:50 ?1056次閱讀
    以<b class='flag-5'>訪問</b><b class='flag-5'>外部</b>SDRAM為例來說明降低<b class='flag-5'>外部</b><b class='flag-5'>存儲</b>系統(tǒng)功耗的方法

    MySQL分區(qū)表的類型及原理

    那么在分區(qū)的操作是怎樣進(jìn)行的呢?其實(shí)常規(guī)的CRUD操作以及返回結(jié)果和普通表沒有任何區(qū)別。具體分區(qū)層實(shí)現(xiàn)是先打開并鎖定所有底層表,優(yōu)化器先判斷是否可以過濾部分分區(qū),然后調(diào)用對應(yīng)的
    的頭像 發(fā)表于 03-29 13:58 ?1277次閱讀
    MySQL<b class='flag-5'>分區(qū)</b>表的類型及原理

    Android 11的外部存儲權(quán)限申請流程分享

    Android 11對應(yīng)的API為30,從這個(gè)版本起要想對外部存儲進(jìn)行寫入操作的話需要比以往的操作多幾個(gè)步驟,這里簡單歸納下,具體的原因我就不多話了,具體步驟如下以供參考
    的頭像 發(fā)表于 05-26 11:29 ?7256次閱讀
    <b class='flag-5'>Android</b> 11的<b class='flag-5'>外部</b><b class='flag-5'>存儲</b>權(quán)限申請流程分享

    外部存儲和內(nèi)部存儲的區(qū)別

    Android中根據(jù)數(shù)據(jù)是否為應(yīng)用私有、是否需要給外部應(yīng)用暴露以及數(shù)據(jù)的大小可以有以下幾種選擇: * Shared Preferences * 內(nèi)部存儲 * 外部
    的頭像 發(fā)表于 05-26 11:30 ?2120次閱讀
    <b class='flag-5'>外部</b><b class='flag-5'>存儲</b>和內(nèi)部<b class='flag-5'>存儲</b>的區(qū)別

    SD卡外部存儲使用方法

    Android`設(shè)備支持外部存儲,比如`SD`卡等,保存在外部存儲的數(shù)據(jù)具有全局可讀性,可供在其他設(shè)備比如電腦
    的頭像 發(fā)表于 05-26 11:32 ?1423次閱讀
    SD卡<b class='flag-5'>外部</b><b class='flag-5'>存儲</b>使用方法

    8位PIC單片機(jī)上的存儲訪問分區(qū)

    電子發(fā)燒友網(wǎng)站提供《8位PIC單片機(jī)上的存儲訪問分區(qū).pdf》資料免費(fèi)下載
    發(fā)表于 09-25 14:50 ?0次下載
    8位PIC單片機(jī)上的<b class='flag-5'>存儲</b>器<b class='flag-5'>訪問</b><b class='flag-5'>分區(qū)</b>

    外部存儲器有哪些

    外部存儲器是指用于存儲數(shù)據(jù)的獨(dú)立設(shè)備,它們通常與計(jì)算機(jī)或其他電子設(shè)備連接,并提供額外的存儲空間,允許用戶在不改變主設(shè)備內(nèi)部存儲的情況下保存和
    的頭像 發(fā)表于 09-05 10:42 ?5121次閱讀