You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 11明基交互平板无法打开目录的问题求助

问题解决指南

一、解决ACTION_OPEN_DOCUMENT_TREE的ActivityNotFoundException异常

你的错误是因为系统中没有能处理该Intent的应用,大概率是系统自带的「文件管理」(Files)应用被禁用,激活步骤如下:

  • 打开设备「设置」,进入「应用管理」(或「应用和权限」→「应用列表」)
  • 在应用列表中找到「文件管理」(或命名为Files)
  • 进入应用详情页,点击「启用」按钮(若之前为禁用状态)
  • 重启你的应用后重新测试代码

Android系统默认依赖系统文件管理应用处理SAF的目录选择Intent,启用后即可正常响应ACTION_OPEN_DOCUMENT_TREE请求。

二、Android 11+不使用SAF读取USB设备数据的方法

方法1:USB Host API(直接与USB设备通信)

适合需要直接访问USB外设的场景,步骤如下:

  1. 声明权限
    在AndroidManifest.xml中添加:
<uses-feature android:name="android.hardware.usb.host" android:required="false" />
<uses-permission android:name="android.permission.USB_PERMISSION" />
  1. 请求USB设备权限
    通过UsbManager获取已连接的USB设备列表,向目标设备发起权限请求:
UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
HashMap<String, UsbDevice> deviceList = usbManager.getDeviceList();
UsbDevice targetDevice = ...; // 从列表中选择目标USB存储设备

PendingIntent permissionIntent = PendingIntent.getBroadcast(this, 0, new Intent("com.your.package.USB_PERMISSION"), 0);
usbManager.requestPermission(targetDevice, permissionIntent);
  1. 读取设备数据
    获取权限后,通过UsbDeviceConnection和UsbInterface建立连接,解析USB存储的文件系统(需自行处理FAT32/NTFS等格式,可借助第三方文件系统解析库)。

方法2:MANAGE_EXTERNAL_STORAGE权限(全局文件访问)

仅适用于具备文件管理功能的应用,需注意该权限需Google Play特殊审核:

  1. 声明权限
    在AndroidManifest.xml中添加:
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
    android:minSdkVersion="30" />
  1. 引导用户开启权限
if (!Environment.isExternalStorageManager()) {
    Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
    Uri uri = Uri.fromParts("package", getPackageName(), null);
    intent.setData(uri);
    startActivity(intent);
}

开启后可直接通过File API访问USB挂载路径(通常为/storage/usb0/、/storage/usbdisk/等,不同设备路径可能有差异)。

内容的提问来源于stack exchange,提问作者Ayush Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 08:55:06