[ Android ] Android 5.0 Lollipop 再次翻新 SD 卡存取權限

Title

還記得 Google 在 Android 4.4 KitKat 的時候限制了第三方 app 對內建儲存區以外的媒體的存取限制嗎?忘記的話可以溫習一下 [ Android ] Android 4.4 KitKat 針對 SD 卡存取權限的新改變

在 Android 5.0 Lollipop 發布的同時,Google 再次翻新存取權限:這次由使用者賦予 app 權限,決定 app 可以在哪邊建立刪除檔案,哪邊不行。

這次的消息我知道的太晚了。如果不是看到朋友貼出一張圖片顯示 X-plore File Manager 最新的更新支援了 Lollipop 的外部儲存裝置存取權限,我還真的不曉得這個新改進。

簡單來說,Google 在 KitKat 限制了外部儲存裝置的存取權限後,引來了很多爭議,而且也有非常多開發者極力反對。於是 Google 思索如何滿足開發者與使用者的需求,又能照顧使用者的安全,最後的結果就是 Lollipop 採用的新方法。

在 Android 5.0 Lollipop 中新增了 ACTION_OPEN_DOCUMENT_TREE 這個新的動作。在 ACTION_OPEN_DOCUMENT_TREE 允許的目錄中,app 可以讀取 / 建立 / 刪除檔案或目錄,就跟以前一樣。

使用者這邊具體的體驗就是當 app 安裝或啟動過程,會詢問使用者可以賦予權限的目錄。舉例來說,使用者開啟音樂管理程式的時候,可以允許音樂管理程式對 SD 卡上的【音樂】目錄擁有完整存取權限。這麼一來就可以更新【音樂】目錄中所有音樂檔的 MP3 tag。但是除了【音樂】這個目錄以外,其他的儲存裝置或者是目錄它都只能讀取,不能建立也不能刪除。或者是安裝檔案管理程式,賦予【SD 卡】的完整存取權限。如此一來,檔案管理程式就可以管理整張 SD 卡。

所以對使用者來說,以後安裝 app 可能就會被詢問可以管理的目錄有哪些。

當然,這個新功能必須要開發者更新他們的 app 支援 ACTION_OPEN_DOCUMENT_TREE 才行。