Android问题解决-部分机型上传图片失败

今天许多新用户反馈app无法上传图片,都是Android10及以上。
ios能正常上传,且我们无法跟后台要请求日志。

第一步:复现问题

用测试机能够正常上传,没有和用户同机型的真机无法调试。于是上云真机(远程调试)复现情况。

推荐云真机平台:
https://console.cloud.tencent.com/wetest/cloudphone/remote 腾讯 免费半小时(只能一次测试,需实名)
https://cn.devecostudio.huawei.com/console/testservice/remote 华为 免费8小时(机型少,需实名)
https://emas.console.aliyun.com/ 阿里云 每个账号每月30分,机型相对齐全(/流泪 太良心了伙计们,需实名)
https://apm.umeng.com/platform/ 友盟 集成sdk300分钟/不集成60分钟(不用实名)
ps: 不要瞎去各种平台注册账号,会被客服持续电话骚扰。

第二步:寻找问题。

获取异常信息:
ToastUtils.showMessage(Throwable对象.getMessage());
捕获到异常:open failed:EACCES(Permission denied),权限不足。
捕获异常open failed:EACCES(Permission denied)
虽已动态申请了通常的存储权限,但在Android10(API 29)及以上系统通过绝对路径打开文件时,可能出现权限不足的错误。 应用在默认情况下被赋予了对外部存储设备的分区访问权限(即分区存储)。此类应用只能看到本应用专有的目录以及特定类型的媒体。

第三步:解决问题。

通过new File(filePath)去打开的这类路径 不具有直接内核访问权限
1)设置使用旧版本的存储规则:

<application
	android:requestLegacyExternalStorage="true"...

2)build.gradle:sdk版本在29及以上,不然找不到上面的属性

compileSdkVersion 30 
targetSdkVersion 30

再次用云真机测试,上传成功。
参考自:https://blog.csdn.net/little_story/article/details/106409219

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值