Android 外置SDCard讀寫權限總結

來源:互聯網
上載者:User

標籤:設計   實現   方案   資料區   car   ica   ide   color   存取控制   

在Android 4.4中,如果同時使用了機身儲存和SD卡, 那麼應用程式將無法在SD卡中建立、修改、刪除資料。但是應用程式仍然可以往主儲存(機身儲存)的任意目錄中寫入資料,不受任何限制。

Google表示, 這樣做的目的是,,通過這種方式進行限制,系統可以在應用程式被卸載後清除遺留檔案。比如,你無法使用酷我音樂盒下載儲存Mp3到外置儲存卡了,也無法使用快讀免費小說將TXT版小說下載儲存到外置儲存卡了

在Android開發人員網站的 "外部儲存技術資訊"文檔中描述道 : 

WRITE_EXTERNAL_STORAGE只為裝置上的主要外部儲存授予寫入權限, ,應用程式無法將資料寫入二級外部存放裝置,除非綜合許可權指定了應用程式的包目錄。

這目前隻影響雙存放裝置,如果你的裝置有內部儲存空間,即通常所說的機身儲存,那麼你的SD卡就是一個二級外部存放裝置。

 

那麼Android 4.4 為何要限制 SD 記憶卡讀寫?

實際上這是個誤解,當讀完以下描述你會發現安卓4.4是加強了對SD卡的支援。

先定義幾個術語,以避免二義性:

內部儲存:指/data分區。

外部儲存:指/sdcard分區。

合并儲存:指/sdcard實際上指向/data分區的一個目錄,兩者在物理上共用儲存空間。

SD卡:指物理可移除的那個小儲存卡片

安卓對SD卡的支援:

安卓2.1及之前的版本,不支援合并儲存,SD卡作為外部儲存,應用只能安裝到內部儲存。

安卓2.2起,不支援合并儲存,SD卡作為外部儲存,考慮到一些機型的內部儲存比較小,所以增加了安裝/行動裝置 App到外部儲存的功能。

安卓3.0起,支援並推薦使用合并儲存方案。不採用合并儲存方案的機型,仍然可以沿用之前版本的方案(參見上一條目)。對於採用了合并儲存方案的機型,安裝一個應用到外部儲存等同於安裝它到內部儲存(所以介面上就沒有"移動到外部儲存/內部儲存"選項了),手機仍然可以配備SD卡,但SD卡對於第三方應用來說是唯讀,僅媒體檔案可以通過MediaProvider暴露給使用者和應用讀取。

安卓4.4起,採用合并儲存方案的機型,可以配備SD卡,第三方應用程式可以通過公開的API讀寫自己在SD卡上的私人資料區(類似於/data/data/[package name]或/sdcard/Android/data/[package name]的私人資料區),也可以通過公開的API讀取SD上的其它檔案。

可以看出安卓對SD卡的支援是在逐步加強的,而產生“安卓4.4限制SD卡”這個誤解的根源是在安卓4.4之前有很多手機廠商為了同時支援外部儲存和SD卡改寫了安卓系統,賦予了第三方應用完全讀寫SD卡的許可權,到安卓4.4時,這些廠商又不得不遵守Google的要求關閉了這個許可權。

需要說明的是,在安卓4.4裡,系統應用(指有platform簽名,或預裝在/system/priv-app目錄下的應用)可以通過使用WRITE_MEDIA_STORAGE許可權擷取完全讀寫SD卡的許可權。

補充:為了保證讀寫SD卡的遺留應用(legacy applications)能正常工作,有些廠商會無視安卓4.4的原始設計,通過修改分組策略在安卓4.4上也賦予使用WRITE_EXTERNAL_STORAGE許可權的程式完全讀寫SD卡的許可權。

Android 5.0不能通過流的形式直接往外置SDCard目標路徑url裡面寫入資料了,必須通過support.v4.provider.DocumentFile來實現,可以通過發送Intent.ACTION_OPEN_DOCUMENT_TREE,動態授予SDCard分類樹的讀寫權限。

Android 6.0還需要先申請外置SDCard讀寫權限。在Android6.0中,第三方應用不再被加入sdcard_r和sdcard_rw組中。相反,通過給應用掛載合適的運行時視圖,實現對外部儲存的存取控制.

Android 外置SDCard讀寫權限總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.