赞
踩
最近接到一个问题反馈,一个几年前的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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。