Android11、12外接USB-OTG存储设备 IllegalArgumentException: Invalid path: /mnt/media_rw/

328 阅读1分钟

前景提要

APP的targetSdkVersion=28且正常获取了READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限,在Android11或12系统上用File API读写USB-OTG外接硬盘,会报crash:

java.lang.IllegalArgumentException: Invalid path: /mnt/media_rw/1EEF7FF39AE

搜索得知是Android11和12的bug,在Android13已经修复。那么如何让Android11和12也能正常读写呢?

解决问题

  1. manifest添加MANAGE_EXTERNAL_STORAGE权限
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
  1. 动态申请MANAGE_EXTERNAL_STORAGE权限
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);//Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION
intent.setData(Uri.parse("package:" + context.getPackageName()));
startActivityForResult(intent,1);
  1. 重启应用,可以正常读写外接硬盘。