JellyBean中的READ_EXTERNAL_STORAGE權限

在JellyBean中,Android添加了一個新的權 限」android.permission.READ_EXTERNAL_STORAGE」,顧名思義該權限說明該程序能夠讀取設備外部存儲空間(內置 SDcard和外置SDCard)的文件,若是您的App已經添加了「WRITE_EXTERNAL_STORAGE 」權限 ,則就不必添加讀的權限了,寫權限已經包含了讀權限了。android

而對於那些既沒有寫權限也沒有設置這個新的讀權限的App,在Jelly Bean以前的版本中讀取SDCard中的內存是沒問題的,而在新的JellyBean的設置選項中Google新添加了一個設置項:「對USB存儲設備 進行讀寫保護」,若是用戶啓用了該選項,則沒有添加」android.permission.READ_EXTERNAL_STORAGE」或者 「WRITE_EXTERNAL_STORAGE 」權限的App是不能讀取SDCard中文件的。

4.1的模擬器目前沒有讀取系統的設置項內存,因此該問題在模擬器上是測試不出來的。
ide

若是您的App沒有直接讀取SDcard中的文件,而是處理從Intent或者ContentProvider中獲取的URI,因爲URI可能指向一個文件,因此這種狀況您也須要添加該讀權限,例如(使用 ContentResolver來打開一個 file:// Uri )測試

若是您的App提供了ContentProvider,則您應該暴露 content:// Uri給第三方程序使用(而不是 file:// Uri), 第三方程序在使用content:// Uri訪問SDCard中的文件內容的時候 是經過您的ContentProvider來打開文件的,這樣使用您的App的軟件就無需添加讀文件的權限了。spa

下圖是Jelly Bean中對USB讀寫保護的設置項截圖,注意在確認對話框中 提示可能會致使沒有讀寫權限的App沒法讀取SDcard中的內容:code

對USB進行讀寫保護

對USB進行讀寫保護blog

讀寫保護功能確認對話框

讀寫保護功能確認對話框內存


Read more: http://blog.chengyunfeng.com/?p=427#ixzz3XNsEwSdA
get

相關文章
相關標籤/搜索