導航:首頁 > 操作系統 > androidsd卡訪問許可權

androidsd卡訪問許可權

發布時間:2023-03-14 22:28:12

❶ 請問怎樣開啟手機的sd卡許可權

開啟手機的sd卡許可權步驟如下:

  1. 找到設置並打開

    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庫中,之前的同事的修改記錄,找到可能的解決方案,修改如下:

    引入新的問題,此時,點擊 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運行時許可權如下:

    發現此時,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

    到此為止,

    ❸ 安卓手機外置sd卡的許可權怎麼打開

    在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源碼目錄frameworksasedataetcplatform.xml中:

    <permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
    <group gid="sdcard_rw" />
    </permission>

    <permission name="android.permission.WRITE_MEDIA_STORAGE" >
    <group gid="media_rw" />
    </permission>
    使用到的類主要是framework/base/core/java/android/os/storage/StorageVolume.java及相同目錄下的StorageManager.java文件。

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

    如果是安卓6.0的外置SD卡的話可以先打開設置,然後應用程序——應用程序管理器,再打開某個軟體——存儲——選擇已使用的存儲空間,然後點更改,選擇SD卡,這樣就可以了。

    ❹ Android許可權機制

    我們知道 Android 應用程序是沙箱隔離的,每個應用都有一個只有自己具有讀寫許可權的專用數據目錄。但是如果應用要訪問別人的組件或者一些設備上全局可訪問的資源,這時候許可權機制就能系統化地規范並強制各類應用程序的行為准則。

    Android 安全性概覽

    在 Android 中,一個許可權,本質上是一個字元串,一個可以表示執行特定操作的能力的字元串。比如說:訪問 SD 卡的能力,訪問通訊錄的能力,啟動或訪問一個第三方應用中的組件的能力。 許可權被授予了之後,首先會在內存和本地中有記錄,這在調用系統binder服務和其他應用組件時做鑒權依據,比如調用系統binder服務時會通過Binder.getCallingUid()拿到調用者的Uid,而Uid一般都是與應用包名一一對應的,再拿這個Uid到PMS里去查這個應用對應的許可權。 其次會按被授予的許可權將應用分到某個組。 可以參考 https://www.jianshu.com/p/a17c8bed79d9

    自定義許可權的應用場景在於限制其它應用對本應用四大組件的訪問。具體用法可以參考 https://www.cnblogs.com/aimqqroad-13/p/8927179.html

    pm list permissions -f 命令可以詳細查看 Android 所有預定義的許可權。

    更詳細的許可權信息參考 https://developer.android.com/reference/android/Manifest.permission?hl=zh-cn#WRITE_EXTERNAL_STORAGE

    可以看到一個許可權的信息包括:定義的包名、標簽、描述、 許可權組 保護級別

    許可權根據設備的功能或特性分為多個組。如果應用已在相同許可權組中被授予另一危險許可權,系統將立即授予該許可權,如READ_CONTACTS和WRITE_CONTACTS。

    SYSTEM_ALERT_WINDOW 和 WRITE_SETTINGS 由於其特殊性,其申請方式與其它許可權都不同。

    其授予流程如下:

    (關於 AppOpsManager 是什麼可以參考: https://segmentfault.com/a/1190000009214983 )

    這里簡要分析下ActivityCompat#requestPermissions的流程:

    更詳細的許可權授予流程源碼分析可以參考: https://segmentfault.com/a/1190000009214983

    普通許可權: 清單文件中聲明即可。

    危險許可權: 方式一: pm grant application_package android.permission.CHANGE_CONFIGURATION 方式二:appops set application_package permission_num 0/1

    appops可以授予的許可權參考 android.app.AppOpsManager 中的聲明

    系統簽名許可權: 方式一:將app遷移到system/priv-app目錄中。 方式二:看不懂,參考 https://blog.csdn.net/abcd_3344_abcd/article/details/50698759

    android 4.4 訪問sd卡需要申請許可權。 您的應用在 Android 4.4 上運行時無法讀取外部存儲空間上的共享文件,除非您的應用具有 READ_EXTERNAL_STORAGE 許可權。也就是說,沒有此許可權,您無法再訪問 () 返回的目錄中的文件。但是,如果您僅需要訪問 getExternalFilesDir() 提供的您的應用特有目錄,那麼,您不需要 READ_EXTERNAL_STORAGE `許可權。

    android 6.0 運行時許可權。 此版本引入了一種新的許可權模式,如今,用戶可直接在運行時管理應用許可權。這種模式讓用戶能夠更好地了解和控制許可權,同時為應用開發者精簡了安裝和自動更新過程。用戶可為所安裝的各個應用分別授予或撤銷許可權。 對於以 Android 6.0(API 級別 23)或更高版本為目標平台的應用,請務必在運行時檢查和請求許可權。要確定您的應用是否已被授予許可權,請調用新增的 checkSelfPermission() 方法。要請求許可權,請調用新增的 requestPermissions() 方法。即使您的應用並不以 Android 6.0(API 級別 23)為目標平台,您也應該在新許可權模式下測試您的應用。 如需了解有關在您的應用中支持新許可權模式的詳情,請參閱 使用系統許可權 。如需了解有關如何評估新模式對應用的影響的提示,請參閱 許可權最佳做法 。

    android 7.+ 應用間共享文件要使用FileProvider。 對於面向 Android 7.0 的應用,Android 框架執行的 StrictMode API 政策禁止在您的應用外部公開 file://URI。如果一項包含文件 URI 的 intent 離開您的應用,則應用出現故障,並出現 FileUriExposedException 異常。 要在應用間共享文件,您應發送一項 content:// URI,並授予 URI 臨時訪問許可權。進行此授權的最簡單方式是使用 FileProvider `類。如需了解有關許可權和共享文件的詳細信息,請參閱 共享文件 。

    android 8.+
    同一許可權組的許可權在被授予了之後也需要顯式的再申請一次。
    在 Android 8.0 之前,如果應用在運行時請求許可權並且被授予該許可權,系統會錯誤地將屬於同一許可權組並且在清單中注冊的其他許可權也一起授予應用。 對於針對 Android 8.0 的應用,此行為已被糾正。系統只會授予應用明確請求的許可權。然而,一旦用戶為應用授予某個許可權,則所有後續對該許可權組中許可權的請求都將被自動批准。 例如,假設某個應用在其清單中列出 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 。應用請求 READ_EXTERNAL_STORAGE ,並且用戶授予了該許可權。如果該應用針對的是 API 級別 24 或更低級別,系統還會同時授予 WRITE_EXTERNAL_STORAGE ,因為該許可權也屬於同一 STORAGE 許可權組並且也在清單中注冊過。如果該應用針對的是 Android 8.0,則系統此時僅會授予 READ_EXTERNAL_STORAGE ;不過,如果該應用後來又請求 WRITE_EXTERNAL_STORAGE ,則系統會立即授予該許可權,而不會提示用戶。

    android 9
    隱私許可權變更。
    為了增強用戶隱私,Android 9 引入了若干行為變更,如限制後台應用訪問設備感測器、限制通過 Wi-Fi 掃描檢索到的信息,以及與通話、手機狀態和 Wi-Fi 掃描相關的新許可權規則和許可權組。

    android 10
    隱私權變更。
    外部存儲訪問許可權范圍限定為應用文件和媒體,在後台運行時訪問設備位置信息需要許可權,針對從後台啟動 Activity 的限制等。

    android 11
    隱私許可權變更。
    更詳細的版本變更請參考 https://developer.android.com/preview/privacy?hl=zh-cn

閱讀全文

與androidsd卡訪問許可權相關的資料

熱點內容
淮南程序員接私活項目 瀏覽:480
怎樣加密自己的密碼 瀏覽:521
安卓怎麼關許可權保護隱私 瀏覽:390
海牛微視app怎麼用 瀏覽:70
單片機怎樣選變壓器 瀏覽:829
癌症pdf 瀏覽:725
雲伺服器鏡像批量部署環境 瀏覽:683
安卓手機瀏覽器能訪問什麼網站 瀏覽:254
找不到網站的伺服器ip地址該如何解決 瀏覽:743
演算法十個數降序排列 瀏覽:95
基於單片機的老年人健康監測系統 瀏覽:706
python入門經典pdf下載 瀏覽:17
東芝變頻2p空調壓縮機 瀏覽:227
自家wifi怎麼能加密 瀏覽:644
紅米k40加密門禁卡 瀏覽:847
什麼樣的源碼好看 瀏覽:156
手機主伺服器有什麼用 瀏覽:612
程序編寫命令 瀏覽:597
android發送心跳包 瀏覽:385
指標源碼和原理 瀏覽:700