Android开发 读写外部储存

今天在写Android的时候突然发现APP不能向自身的Android/data或内部文件夹写入文件。

按理来说,在申请了读写储存空间权限的情况下我们也只能读写本应用的文件夹,但我在复制文件的时候出现了一些小问题。

我试着复制文件到Android/data,但是抛出了如下异常信息,居然是无法读取要复制的文件。

android.system.ErrnoException: open failed: EACCES (Permission denied)

于是上搜索引擎找了一圈,发现Android 11有点不一样,除了EXTERNAL_STORAGE需要申请以外,还需要有MANAGE_EXTERNAL_STORAGE权限。

MANAGE_EXTERNAL_STORAGE 就是运行应用访问所有文件,如果没有这个权限,Android 11及以上版本就无法访问其他储存空间内的文件。

要动态申请到它也很简单,只需要判断一下Android版本和权限情况即可。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    if(!Environment.isExternalStorageManager()){
        startActivity(new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION));
    }
}

这样我们就打开了授权应用访问所有文件的界面,接下来用户自行操作即可。

未经允许禁止转载本站内容,经允许转载后请严格遵守CC-BY-NC-ND知识共享协议4.0,代码部分则采用GPL v3.0协议
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇