Android USB写入数据失败(EACCES (Permission denied))

本文介绍了在Android应用中遇到USB写入数据时出现EACCES (Permission denied)错误的问题。尽管权限设置正确,但在Android 6.0及以上版本中仍无法创建文件夹。解决方案是通过引入第三方库libaums,在高版本手机上创建文件路径,以解决文件操作的权限问题。文中提到了相关文档和博客资源作为参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近接到一个问题反馈,一个几年前的APP,之前USB热插拔读写备份正常,现在居然不能正常备份。log中显示:

System.err: java.io.IOException: open failed: EACCES (Permission denied)

但确认权限都有,targetSdkVersion为22,因此不存在动态申请权限的问题。之后用同样的APP在低版本手机上测试正常(有些是需要手动打开OTG)。后来搜索网上文章指出:Android 6.0以后,就算添加权限,也不能成功操作USB。进一步测试发现:在高版本手机,只是不能正常创建文件夹,如果手动创建了路径,还是能正常读写文件,因此本文只需采用第三方库创建文件路径,其他代码不用改变。

引入第三方库:

api 'com.github.mjdev:libaums:0.5.5'

在Service中初始化监听USB插拔广播:

IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.MEDIA_CHECKING");
filter.addAction("android.intent.action.MEDIA_MOUNTED");
filter.addAction("android.intent.action.MEDIA_EJECT");
filter.addAction("android.intent.action.MEDIA_RE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值