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

Android API29下OTG连接U盘的权限与路径访问问题求助

Android API 29 下OTG U盘访问权限配置指南

权限配置修正

  1. 移除无效权限

    • MANAGE_EXTERNAL_STORAGE 是API 30(Android 11)才引入的权限,API 29环境下配置了也无效,直接删除。
    • USB_PERMISSION 用于USB设备的直接通信(如串口、自定义设备),并非U盘文件访问所需,可移除。
  2. 保留并补充必要配置
    清单文件中保留基础存储权限:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    

    同时在application标签下添加属性,禁用API 29默认的分区存储限制:

    <application
        ...
        android:requestLegacyExternalStorage="true">
        ...
    </application>
    

正确获取U盘路径的方法

硬编码路径的方式不可靠,Android中可移动存储的路径是动态分配的,应该通过StorageManager API获取:

StorageManager storageManager = (StorageManager) getSystemService(Context.STORAGE_SERVICE);
List<StorageVolume> storageVolumes = storageManager.getStorageVolumes();

for (StorageVolume volume : storageVolumes) {
    // 判断是否为可移动存储(U盘)
    if (volume.isRemovable()) {
        // 获取访问路径
        String volumePath = volume.getDirectory() != null ? volume.getDirectory().getAbsolutePath() : "";
        // 后续可基于此路径进行文件操作
    }
}

权限申请注意事项

  • 除清单配置外,需动态申请READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限,因为它们属于危险权限,必须通过弹窗让用户授权。
  • 即使授权成功,部分设备可能仍需用户手动在系统设置中开启应用的"存储"权限,或确认U盘的访问授权。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:40:34