Android 6.0 讀寫SD卡權(quán)限問題

一坤溃、問題描述##

Android 6.0 下默認存儲SD卡,使用原生FMRadio生成的文件保存到內(nèi)部存儲中
【預置條件】插入T卡【操作步驟】設置>存儲設備和USB>選擇SD卡為默認存儲>收音機錄音【實際結(jié)果】收音機的錄音文件未保存到T卡【預期結(jié)果】收音機的錄音文件保存到T卡【復現(xiàn)概率】10/10
此外明棍,SoundRecorder默認存儲SD卡悟民,生成的文件卻可以保存到SD卡中

二、問題分析##

1枕稀、收音機文件沒有保存到指定的SD卡目錄下捐名,因此可能是文件的路徑不對旦万。
2、進入設置中镶蹋,切換默認存儲位置成艘,內(nèi)部存儲或者SD卡,每次切換都會修改系統(tǒng)中某一屬性值贺归。
3淆两、當收音機文件保存的時候,必須要讀取當前系統(tǒng)的默認存儲路徑拂酣,然后生成自己的文件路徑秋冰。

三、解決方案##

STEP1婶熬、初步解決方案剑勾,但沒有生效,引入新問題
對比SoundRecorder赵颅,根據(jù)GIT庫中虽另,之前的同事的修改記錄,找到可能的解決方案饺谬,修改如下:

  1. 修改packages/apps/FMRadio/AndroidManifest.xml文件添加<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
  2. 修改packages/apps/FMRadio/src/com/android/fmradio/FmRecorder.java文件添加import com.mediatek.storage.StorageManagerEx;
    語句替換startRecording函數(shù)String recordingSdcard = FmUtils.getDefaultStoragePath();為String recordingSdcard = StorageManagerEx.getDefaultPath();

引入新的問題捂刺,此時,點擊 Start Recording 會提示內(nèi)部錯誤募寨。
分析Log發(fā)現(xiàn)族展,由于權(quán)限拒絕,拋出IO異常
01-01 07:35:38.167 7467 7467 W System.err: java.io.IOException: open failed: EACCES (Permission denied)

STEP2拔鹰、Android M 下SD卡讀寫權(quán)限問題
分析由于權(quán)限問題后仪缸,結(jié)合Android M new design,開始查找文檔格郁,尋找解決Android M 下SD卡讀寫權(quán)限問題
Android6.0中的運行時請求權(quán)限
后來,試了好幾種方法,但都沒有用例书,以及報問題“EACCES (Permission denied)”

STEP3锣尉、再分析可能是運行時權(quán)限問題
判斷APP運行時權(quán)限如下:

  • adb remount;//掛載
  • adb shell;//進入shell
  • ps | grep fmradio;//查找FMRadio的PID,前提是手機打開FMRadio决采,插入耳機
  • cd proc/4830;//進入PID對應的信息文件中
  • cat status;//查看進程信息
PID

發(fā)現(xiàn)此時自沧,F(xiàn)MRadio對于的組權(quán)限如下:
com.android.fmradio Groups: 1013 3002 3003 9997 50010
com.android.soundrecorder Groups: 1015 1023 3003 9997 50105

根據(jù)系統(tǒng)權(quán)限的定義,有興趣的同學可以去看一下這個文件system/core/include/private/android_filesystem_config.h
分析這些Gid發(fā)現(xiàn):
1015 為sdcard_rw树瞭,1023 為media_rw權(quán)限
因此拇厢,得出結(jié)論如下
1、首先修改AndroidManifest.xml文件晒喷,新增權(quán)限孝偎,確保FMRadio應用級的權(quán)限;
2凉敲、原生FMRadio使用過程中衣盾,會進行運行時的權(quán)限檢查,故FMRadio運行時應該拿到了WRITE_EXTERNAL_STORAGE爷抓,以及READ_EXTERNAL_STORAGE權(quán)限势决,
3、但是由于FMRadio本身不具備“1015,1023”組權(quán)限蓝撇,這些權(quán)限無效果复,仍然無法對SD卡進行讀寫操作。

STEP4渤昌、最終解決方案
STEP1的修改基礎上虽抄,在框架層,權(quán)限對應組中給予FMRadio相應的組權(quán)限耘沼,新增修改如下:
frameworks/base/data/etc/platform.xml

<---add XXX begin -->
<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
   <group gid="sdcard_rw" />
   <group gid="media_rw" />
</permission>
<---add XXX end -->

重編framework.jar极颓, 將修改后的jar文件push到手機,重啟
此時群嗤,再檢查FMRadio對于的組權(quán)限如下:
com.android.fmradio Groups: 1013** 1015 1023** 3002 3003 9997 50010

運行時組權(quán)限.png

到此為止菠隆,

  • 修改重編framework.jar,
  • 修改重編FMRadio.apk狂秘,再清除數(shù)據(jù)
  • 以上push到手機骇径,
  • 重啟驗證,可以保存到SD卡
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末者春,一起剝皮案震驚了整個濱河市破衔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钱烟,老刑警劉巖晰筛,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嫡丙,死亡現(xiàn)場離奇詭異,居然都是意外死亡读第,警方通過查閱死者的電腦和手機曙博,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怜瞒,“玉大人父泳,你說我怎么就攤上這事∥馔簦” “怎么了惠窄?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長漾橙。 經(jīng)常有香客問我杆融,道長,這世上最難降的妖魔是什么近刘? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任擒贸,我火速辦了婚禮,結(jié)果婚禮上觉渴,老公的妹妹穿的比我還像新娘介劫。我一直安慰自己,他們只是感情好案淋,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布座韵。 她就那樣靜靜地躺著,像睡著了一般踢京。 火紅的嫁衣襯著肌膚如雪誉碴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天瓣距,我揣著相機與錄音黔帕,去河邊找鬼。 笑死蹈丸,一個胖子當著我的面吹牛成黄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播逻杖,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼奋岁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了荸百?” 一聲冷哼從身側(cè)響起闻伶,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎够话,沒想到半個月后蓝翰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體光绕,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年畜份,在試婚紗的時候發(fā)現(xiàn)自己被綠了奇钞。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡漂坏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出媒至,到底是詐尸還是另有隱情顶别,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布拒啰,位于F島的核電站驯绎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏谋旦。R本人自食惡果不足惜剩失,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望册着。 院中可真熱鬧拴孤,春花似錦、人聲如沸甲捏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽司顿。三九已至芒粹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間大溜,已是汗流浹背化漆。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钦奋,地道東北人座云。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像锨苏,于是被迫代替她去往敵國和親疙教。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內(nèi)容