android4.0 中關於內外置sd卡的獲取及讀寫權限問題


from://http://blog.chinaunix.net/uid-26727976-id-3146895.html

在2.x的版本中,在manifest中配置的權限android.permission.WRITE_EXTERNAL_STORAGE確實是用來使得sd卡獲得寫的權限。而在4.0開發的源碼當中,由於有了內外置sd卡的區分,android.permission.WRITE_EXTERNAL_STORAGE的權限用來設置了內置sd卡的寫權限,如果在manifest中只是配置了這個權限,那個應用只能在內置sd卡中進行寫操作,還是無法在外置sd卡中進行寫操作。需要寫外置sd卡的話,需要配置另一個權限android.permission.WRITE_MEDIA_STORAGE,這樣就可以在外置sd卡中進行寫入操作了。

這兩個權限都被定義在 android源碼目錄\frameworks\base\data\etc\platform.xml中:

 

[html]  view plain copy
 
  1. <permission name="android.permission.WRITE_EXTERNAL_STORAGE" >  
  2.     <group gid="sdcard_rw" />  
  3. </permission>  
  4.   
  5. <permission name="android.permission.WRITE_MEDIA_STORAGE" >  
  6.     <group gid="media_rw" />  
  7. </permission>  

使用到的類主要是framework/base/core/java/android/os/storage/StorageVolume.java及相同目錄下的StorageManager.java文件。

 

StorageManager類可以獲得所有的存儲媒體列表,及StorageVolume類型的數組,從而可以獲得對應存儲是否可讀寫一類的信息。

希望可以幫助遇到相同問題的童鞋。

 

2.3中聲明

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

可以讀寫SDCARD,包括其他storage,比如內部flash,usb等等

 

4.0中如果只聲明這個,會發現其他mount的設備有可能沒有寫權限,需要同時聲明

<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE"/>  

這樣才可以讀寫/mnf/flash , /mnt/usb, /mnt/externa等目錄

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM