安卓应用手机本地上传图片报错、三次尝试才触发的异常问题
本地图片上传异常问题说明与排查方向
问题实测现象
- 尝试从手机本地向应用上传图片时,会同步出现两类系统日志报错:
- 日志内容:
Unknown bits set in runtime_flags: 0x8000 - 日志内容:
Access denied finding property
- 日志内容:
- 从Google Drive渠道上传全量内容的流程可正常加载运行,无任何异常
- 实测验证本地文件上传流程的触发阈值:往往需要连续尝试第三次时才能正常唤起上传逻辑
- 应用已在Manifest文件中声明的相关权限配置如下:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
报错根因与对应处理方案
- 针对
Unknown bits set in runtime_flags: 0x8000报错:属于Android 12及以上版本生成的非阻塞系统日志,并非影响上传流程的实际错误源,由应用targetSdkVersion与系统运行时标记的适配错位导致,无需做专项修复 - 针对
Access denied finding property报错:结合仅本地上传触发、Drive上传正常的特征,本质是高版本系统的存储权限适配错位:- Android 13及以上版本已完全废弃旧版
READ_EXTERNAL_STORAGE/WRITE_EXTERNAL_STORAGE权限对图片资源的访问能力,需新增声明android.permission.READ_MEDIA_IMAGES权限,才能正常适配系统文件选择器的图片访问路径 - 之前需尝试3次才能成功的表现,是旧版存储权限在高版本系统上被系统静默拦截导致:前两次权限请求的用户授权状态未被应用正确捕获,直到第三次触发时系统授权状态同步后流程才正常运行
- Android 13及以上版本已完全废弃旧版
- 流程适配提示:若应用采用系统原生的
ACTION_GET_CONTENT/ACTION_PICK意图唤起文件选择器,无需额外申请全盘存储权限,仅需适配对应Android版本的媒体权限即可;适配完成后可移除冗余的旧版存储权限声明,避免不同版本权限逻辑冲突
内容的提问来源于stack exchange,提问作者SICPRO
相关产品推荐
相关产品推荐

