Android 11對(duì)應(yīng)的API為30,從這個(gè)版本起要想對(duì)外部存儲(chǔ)進(jìn)行寫(xiě)入操作的話(huà)需要比以往的操作多幾個(gè)步驟,這里簡(jiǎn)單歸納下,具體的原因我就不多話(huà)了,具體步驟如下以供參考
1-在AndroidManifest.xml里這樣注冊(cè)權(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"
其實(shí)這句在API30下已經(jīng)不起作用了,但在API29中還有作用,所以一并加上以免麻煩。
3-在代碼中申請(qǐng)權(quán)限,由于這些新加的權(quán)限特殊,以往的申請(qǐng)方式不起作用,無(wú)論怎么申請(qǐng),最后必然是授權(quán)失敗。所以正確的方式就是先判斷API的版本,如果大于等于30則用Environment.isExternalStorageManager()判斷是否有授權(quán),這個(gè)方法會(huì)返回一個(gè)布爾值,如是false就跳到一個(gè)特殊的頁(yè)面讓用戶(hù)手動(dòng)授權(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)
由于這個(gè)授權(quán)界面是一個(gè)Activity,所以用startActivity還是startActivityForResult都可以,具體看你怎么利用生命周期了。
4-記得用傳統(tǒng)方式申請(qǐng)下WRITE_EXTERNAL_STORAGE,以免產(chǎn)生不必要的麻煩。
到此,針對(duì)Android 11的外部存儲(chǔ)的權(quán)限申請(qǐng)就這樣了。最后說(shuō)一下,雖然通過(guò)上述方式可以對(duì)整個(gè)外部存儲(chǔ)空間進(jìn)行文件的讀寫(xiě)操作,但Android/data目錄是個(gè)例外,此目錄下保存著所有應(yīng)用的專(zhuān)屬空間,在Android11下已經(jīng)不讓訪問(wèn)了,但可以通過(guò)代碼方式直接訪問(wèn)自己的那個(gè)目錄。
-
Android
+關(guān)注
關(guān)注
12文章
3946瀏覽量
128018 -
存儲(chǔ)
+關(guān)注
關(guān)注
13文章
4359瀏覽量
86213 -
API
+關(guān)注
關(guān)注
2文章
1518瀏覽量
62459
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
鴻蒙原生應(yīng)用元服務(wù)-訪問(wèn)控制(權(quán)限)開(kāi)發(fā)工作流程相關(guān)
![](https://file1.elecfans.com/web2/M00/86/4A/wKgaomRmVUqAXJvPAAAQqx1aEbI282.png)
[8.1.2]--7.1.4重難點(diǎn)動(dòng)畫(huà)講解-Android的運(yùn)行權(quán)限申請(qǐng)流程
Android中數(shù)據(jù)存儲(chǔ)的介紹和使用
HarmonyOS開(kāi)發(fā)權(quán)限申請(qǐng)的方法
在Android 11中OTA工具讀寫(xiě)的文件夾不具有訪問(wèn)權(quán)限,不能升級(jí)是為什么?
請(qǐng)問(wèn)是否有關(guān)于Android11平臺(tái)默認(rèn)開(kāi)放root權(quán)限的文檔?
Android系統(tǒng)權(quán)限提升攻擊檢測(cè)技術(shù)_王聰
如何使用權(quán)限的Android進(jìn)行應(yīng)用風(fēng)險(xiǎn)評(píng)估方法的資料說(shuō)明
![如何使用<b class='flag-5'>權(quán)限</b>的<b class='flag-5'>Android</b>進(jìn)行應(yīng)用風(fēng)險(xiǎn)評(píng)估方法的資料說(shuō)明](https://file.elecfans.com/web1/M00/8C/F8/pIYBAFycji-AR1apAAA70CUSn60009.png)
如何使用Android的權(quán)限實(shí)現(xiàn)應(yīng)用風(fēng)險(xiǎn)評(píng)估詳細(xì)方法說(shuō)明
![如何使用<b class='flag-5'>Android</b>的<b class='flag-5'>權(quán)限</b>實(shí)現(xiàn)應(yīng)用風(fēng)險(xiǎn)評(píng)估詳細(xì)方法說(shuō)明](https://file.elecfans.com/web1/M00/AB/12/o4YBAF2yuiCABK0_AABKwDEKM7o579.png)
基于權(quán)限的Android應(yīng)用風(fēng)險(xiǎn)評(píng)估方法
![基于<b class='flag-5'>權(quán)限</b>的<b class='flag-5'>Android</b>應(yīng)用風(fēng)險(xiǎn)評(píng)估方法](https://file.elecfans.com/web1/M00/C1/74/pIYBAF8RXf-ANbLvAAFN0eNyZG0666.png)
鴻蒙APP開(kāi)發(fā)鴻蒙權(quán)限請(qǐng)求框架
外部存儲(chǔ)和內(nèi)部存儲(chǔ)的區(qū)別
![<b class='flag-5'>外部</b><b class='flag-5'>存儲(chǔ)</b>和內(nèi)部<b class='flag-5'>存儲(chǔ)</b>的區(qū)別](https://file1.elecfans.com/web2/M00/88/B8/wKgaomRwJ6-AP7NzAAGYzr76swQ929.jpg)
SD卡外部存儲(chǔ)使用方法
![SD卡<b class='flag-5'>外部</b><b class='flag-5'>存儲(chǔ)</b>使用方法](https://file1.elecfans.com/web2/M00/88/B9/wKgZomRwJ-SAGwCRAAA3WU-SLmc814.jpg)
Purple Pi OH Android11 ROOT方法
![Purple Pi OH <b class='flag-5'>Android11</b> ROOT方法](https://file1.elecfans.com/web2/M00/8A/8D/wKgaomSXnc-AUp3pAABB_ZI1EXA151.png)
Purple Pi OH Android11 ROOT方法
![Purple Pi OH <b class='flag-5'>Android11</b> ROOT方法](https://file.elecfans.com/web2/M00/AE/8A/poYBAGSefRmAE78BAATGkVe0sMQ177.png)
評(píng)論