android studio app读写模拟器手机的sd卡文件

在Android13.0模拟器环境下,搭建AndroidStudio项目并使用OpenCV读取SD卡图片。遇到读取JSON文件权限问题,需在AndroidManifest.xml中添加MANAGE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE权限,以及使用tools:ignore=ScopedStorage,经设置后应用能成功读取SD卡文件。Android10.0后权限管理更严格,WRITE_EXTERNAL_STORAGE仅限于读取媒体文件。
摘要由CSDN通过智能技术生成

android studio app读写sd卡文件

工作需要搭建了一个android studio环境(jni环境配置右面有空再讲)。目前Demo app有两个简单需求,一个是调用OpenCV读取手机sd卡图片,一个是读取手机下的Json文件,这里记录一下踩到的坑。

注:模拟器android版本13.0

app读取图片设置

1, AndroidMainfest.xml中,添加如下权限:

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

2,打开模拟器,上滑打开settings——apps——你的app名称——Permissions,可以看到多出了一个Photos and Videos权限,允许即可。

3,在android studio工程中,点击View——tool Windows——Device File Explorer窗口,可以看到如下界面,放入其中的0D08-311D下的Pictures目录中:
在这里插入图片描述

4,打开手机模拟器,files——SDcard——Pictures,即可看到该图片。同时app可以成功读取该图片。

app读取Json文件

同样的方法,尝试读取Json文件就不行了,始终显示没有读取权限。查询以后还是android权限设置的问题,修改方法如下:
1,AndroidMainfest.xml中,按如下方式添加权限:

    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" />
2,打开模拟器,上滑打开settings——apps——你的app名称——Permissions,可以看到相比值钱多出了一个File权限,允许即可。

3,之后按1.3步骤放到模拟器中的文件,app就可以正常读取了。

总结

android 对于app权限做了修改,在android 10.0前,android.permission.WRITE_EXTERNAL_STORAGE就是读取SD卡的权限,但是10.0及以后权限设置更为严格。测试下来WRITE_EXTERNAL_STORAGE权限目前只包含了读取视频和图片/音频的权限。作为android 11.0的新特性,加入了tools:ignore=“ScopedStorage”,可以使app拥有读取SD卡的权限

(备注:又查了大佬的文章,一般app不应该申请SD卡权限,这里就是Demo样例的临时需求)

参考博客

1,https://blog.51cto.com/lozn/5883878
2,https://blog.csdn.net/guolin_blog/article/details/113954552

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值