日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 6.0 sd卡读写权限,Android 6.0 读写SD卡权限问题

發布時間:2024/9/3 Android 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 6.0 sd卡读写权限,Android 6.0 读写SD卡权限问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、問題描述##

Android 6.0 下默認存儲SD卡,使用原生FMRadio生成的文件保存到內部存儲中

【預置條件】插入T卡【操作步驟】設置>存儲設備和USB>選擇SD卡為默認存儲>收音機錄音【實際結果】收音機的錄音文件未保存到T卡【預期結果】收音機的錄音文件保存到T卡【復現概率】10/10

此外,SoundRecorder默認存儲SD卡,生成的文件卻可以保存到SD卡中

二、問題分析##

1、收音機文件沒有保存到指定的SD卡目錄下,因此可能是文件的路徑不對。

2、進入設置中,切換默認存儲位置,內部存儲或者SD卡,每次切換都會修改系統中某一屬性值。

3、當收音機文件保存的時候,必須要讀取當前系統的默認存儲路徑,然后生成自己的文件路徑。

三、解決方案##

STEP1、初步解決方案,但沒有生效,引入新問題

對比SoundRecorder,根據GIT庫中,之前的同事的修改記錄,找到可能的解決方案,修改如下:

修改packages/apps/FMRadio/AndroidManifest.xml文件添加

修改packages/apps/FMRadio/src/com/android/fmradio/FmRecorder.java文件添加import com.mediatek.storage.StorageManagerEx;

語句替換startRecording函數String recordingSdcard = FmUtils.getDefaultStoragePath();為String recordingSdcard = StorageManagerEx.getDefaultPath();

引入新的問題,此時,點擊 Start Recording 會提示內部錯誤。

分析Log發現,由于權限拒絕,拋出IO異常

01-01 07:35:38.167 7467 7467 W System.err: java.io.IOException: open failed: EACCES (Permission denied)

STEP2、Android M 下SD卡讀寫權限問題

分析由于權限問題后,結合Android M new design,開始查找文檔,尋找解決Android M 下SD卡讀寫權限問題

Android6.0中的運行時請求權限

后來,試了好幾種方法,但都沒有用,以及報問題“EACCES (Permission denied)”

STEP3、再分析可能是運行時權限問題

判斷APP運行時權限如下:

adb remount;//掛載

adb shell;//進入shell

ps | grep fmradio;//查找FMRadio的PID,前提是手機打開FMRadio,插入耳機

cd proc/4830;//進入PID對應的信息文件中

cat status;//查看進程信息

PID

發現此時,FMRadio對于的組權限如下:

com.android.fmradio Groups: 1013 3002 3003 9997 50010

com.android.soundrecorder Groups: 1015 1023 3003 9997 50105

根據系統權限的定義,有興趣的同學可以去看一下這個文件system/core/include/private/android_filesystem_config.h

分析這些Gid發現:

1015 為sdcard_rw,1023 為media_rw權限

因此,得出結論如下

1、首先修改AndroidManifest.xml文件,新增權限,確保FMRadio應用級的權限;

2、原生FMRadio使用過程中,會進行運行時的權限檢查,故FMRadio運行時應該拿到了WRITE_EXTERNAL_STORAGE,以及READ_EXTERNAL_STORAGE權限,

3、但是由于FMRadio本身不具備“1015,1023”組權限,這些權限無效,仍然無法對SD卡進行讀寫操作。

STEP4、最終解決方案

在STEP1的修改基礎上,在框架層,權限對應組中給予FMRadio相應的組權限,新增修改如下:

frameworks/base/data/etc/platform.xml

重編framework.jar, 將修改后的jar文件push到手機,重啟

此時,再檢查FMRadio對于的組權限如下:

com.android.fmradio Groups: 1013** 1015 1023** 3002 3003 9997 50010

運行時組權限.png

到此為止,

修改重編framework.jar,

修改重編FMRadio.apk,再清除數據

以上push到手機,

重啟驗證,可以保存到SD卡

總結

以上是生活随笔為你收集整理的android 6.0 sd卡读写权限,Android 6.0 读写SD卡权限问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。