0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Android 11的外部存儲權(quán)限申請流程分享

jf_78858299 ? 來源:口袋里的安卓 ? 作者:口袋里的安卓 ? 2023-05-26 11:29 ? 次閱讀

Android 11對應(yīng)的API為30,從這個版本起要想對外部存儲進(jìn)行寫入操作的話需要比以往的操作多幾個步驟,這里簡單歸納下,具體的原因我就不多話了,具體步驟如下以供參考

1-在AndroidManifest.xml里這樣注冊權(quán)限:

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

比以往多一條MANAGE_EXTERNAL_STORAGE

2-在AndroidManifest.xml的application下加入android:requestLegacyExternalStorage="true"

其實這句在API30下已經(jīng)不起作用了,但在API29中還有作用,所以一并加上以免麻煩。

3-在代碼中申請權(quán)限,由于這些新加的權(quán)限特殊,以往的申請方式不起作用,無論怎么申請,最后必然是授權(quán)失敗。所以正確的方式就是先判斷API的版本,如果大于等于30則用Environment.isExternalStorageManager()判斷是否有授權(quán),這個方法會返回一個布爾值,如是false就跳到一個特殊的頁面讓用戶手動授權(quán),跳轉(zhuǎn)方法如下:

val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
intent.data = Uri.parse("package:" + requireActivity().packageName)
startActivity(intent) //startActivityForResult(intent,0x01)

由于這個授權(quán)界面是一個Activity,所以用startActivity還是startActivityForResult都可以,具體看你怎么利用生命周期了。

圖片

4-記得用傳統(tǒng)方式申請下WRITE_EXTERNAL_STORAGE,以免產(chǎn)生不必要的麻煩。

到此,針對Android 11的外部存儲的權(quán)限申請就這樣了。最后說一下,雖然通過上述方式可以對整個外部存儲空間進(jìn)行文件的讀寫操作,但Android/data目錄是個例外,此目錄下保存著所有應(yīng)用的專屬空間,在Android11下已經(jīng)不讓訪問了,但可以通過代碼方式直接訪問自己的那個目錄。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3903

    瀏覽量

    126614
  • 存儲
    +關(guān)注

    關(guān)注

    13

    文章

    4123

    瀏覽量

    85273
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1461

    瀏覽量

    61489
收藏 人收藏

    評論

    相關(guān)推薦

    鴻蒙原生應(yīng)用元服務(wù)-訪問控制(權(quán)限)開發(fā)工作流程相關(guān)

    一、權(quán)限的工作流程 權(quán)限申請使用的工作流程 應(yīng)用在訪問數(shù)據(jù)或者執(zhí)行操作時,需要評估該行為是否需要應(yīng)用具備相關(guān)的
    發(fā)表于 04-19 15:27

    [8.1.2]--7.1.4重難點動畫講解-Android的運(yùn)行權(quán)限申請流程

    Android
    jf_60701476
    發(fā)布于 :2022年12月03日 00:55:52

    Android中數(shù)據(jù)存儲的介紹和使用

    APP 在外部存儲上的目錄,其目錄為 Android/data//。在訪問該目錄時, app 不需要申請讀寫存儲
    發(fā)表于 09-19 09:05

    HarmonyOS開發(fā)權(quán)限申請的方法

    所需要的權(quán)限。使用ohos.app.Context.verifySelfmission接口查詢應(yīng)用是否已被授予該權(quán)限。(1).如果已被授權(quán),可以結(jié)束授權(quán)申請流程。(2)如果希望授權(quán),繼
    發(fā)表于 05-19 14:16

    Android 11中OTA工具讀寫的文件夾不具有訪問權(quán)限,不能升級是為什么?

    Android 11中,OTA工具讀寫的文件夾不具有訪問權(quán)限,不能升級。請問有把OTA文件放在能訪問的文件夾下的版本嗎?還沒到APP開發(fā)階段,只能求助原廠。
    發(fā)表于 08-15 06:21

    請問是否有關(guān)于Android11平臺默認(rèn)開放root權(quán)限的文檔?

    請問是否有關(guān)于Android11 平臺默認(rèn)開放root權(quán)限的文檔,我們需要用u盤手機(jī)替換ko文件
    發(fā)表于 04-17 08:21

    Android系統(tǒng)權(quán)限提升攻擊檢測技術(shù)_王聰

    Android系統(tǒng)權(quán)限提升攻擊檢測技術(shù)_王聰
    發(fā)表于 03-19 11:41 ?0次下載

    如何使用權(quán)限Android進(jìn)行應(yīng)用風(fēng)險評估方法的資料說明

    針對Android權(quán)限機(jī)制存在的問題以及傳統(tǒng)的應(yīng)用風(fēng)險等級評估方法的不足,提出了一種基于權(quán)限Android應(yīng)用風(fēng)險評估方法。首先,通過對應(yīng)用程序進(jìn)行逆向工程分析,提取出應(yīng)用程序聲明的
    發(fā)表于 03-28 16:49 ?4次下載
    如何使用<b class='flag-5'>權(quán)限</b>的<b class='flag-5'>Android</b>進(jìn)行應(yīng)用風(fēng)險評估方法的資料說明

    如何使用Android權(quán)限實現(xiàn)應(yīng)用風(fēng)險評估詳細(xì)方法說明

    針對Android權(quán)限機(jī)制存在的問題以及傳統(tǒng)的應(yīng)用風(fēng)險等級評估方法的不足,提出了一種基于權(quán)限Android應(yīng)用風(fēng)險評估方法。首先,通過對應(yīng)用程序進(jìn)行逆向工程分析,提取出應(yīng)用程序聲明的
    發(fā)表于 10-25 16:57 ?4次下載
    如何使用<b class='flag-5'>Android</b>的<b class='flag-5'>權(quán)限</b>實現(xiàn)應(yīng)用風(fēng)險評估詳細(xì)方法說明

    基于權(quán)限Android應(yīng)用風(fēng)險評估方法

    針對Android權(quán)限機(jī)制存在的問題以及傳統(tǒng)的應(yīng)用風(fēng)險等級評估方法的不足,提出了一種基于權(quán)限Android應(yīng)用風(fēng)險評估方法。首先,通過對應(yīng)用程序進(jìn)行逆向工程分析,提取出應(yīng)用程序聲明的
    發(fā)表于 07-17 15:55 ?11次下載
    基于<b class='flag-5'>權(quán)限</b>的<b class='flag-5'>Android</b>應(yīng)用風(fēng)險評估方法

    鴻蒙APP開發(fā)鴻蒙權(quán)限請求框架

    關(guān)于 HarmonyOS 的動態(tài)授權(quán)的常規(guī)操作流程和代碼我之前寫過一篇文章:《鴻蒙動態(tài)權(quán)限申請完整規(guī)范流程和操作詳解》。 文章地址如下: https://harmonyos.51cto
    的頭像 發(fā)表于 09-28 09:19 ?2711次閱讀

    外部存儲和內(nèi)部存儲的區(qū)別

    Android中根據(jù)數(shù)據(jù)是否為應(yīng)用私有、是否需要給外部應(yīng)用暴露以及數(shù)據(jù)的大小可以有以下幾種選擇: * Shared Preferences * 內(nèi)部存儲 * 外部
    的頭像 發(fā)表于 05-26 11:30 ?1518次閱讀
    <b class='flag-5'>外部</b><b class='flag-5'>存儲</b>和內(nèi)部<b class='flag-5'>存儲</b>的區(qū)別

    SD卡外部存儲使用方法

    Android`設(shè)備支持外部存儲,比如`SD`卡等,保存在外部存儲的數(shù)據(jù)具有全局可讀性,可供在其他設(shè)備比如電腦上閱讀,修改等。使用
    的頭像 發(fā)表于 05-26 11:32 ?952次閱讀
    SD卡<b class='flag-5'>外部</b><b class='flag-5'>存儲</b>使用方法

    Purple Pi OH Android11 ROOT方法

    為了讓應(yīng)用程序可以直接調(diào)用su執(zhí)行系統(tǒng)命令和獲取root權(quán)限,本文基于Purple Pi OH主板的Android SDK,介紹如果修改和編譯一個root版本的Android11系統(tǒng),以下為sdk源碼修改方法。
    的頭像 發(fā)表于 06-25 09:49 ?703次閱讀
    Purple Pi OH <b class='flag-5'>Android11</b> ROOT方法

    Purple Pi OH Android11 ROOT方法

    為了讓應(yīng)用程序可以直接調(diào)用su執(zhí)行系統(tǒng)命令和獲取root權(quán)限,本文基于Purple Pi OH主板的Android SDK,介紹如果修改和編譯一個root版本的Android11系統(tǒng),以下為sdk源碼修改方法。
    的頭像 發(fā)表于 06-30 14:59 ?556次閱讀
    Purple Pi OH <b class='flag-5'>Android11</b> ROOT方法