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

授予MANAGE_EXTERNAL_STORAGE权限后无法访问OTG USB Key的问题

问题:Android 12下授权MANAGE_EXTERNAL_STORAGE后需杀进程才能访问OTG设备

设备与应用背景

  • 设备:三星A32 5G(SM-A326B/DS),搭载Android 12原生ROM,SDK版本31
  • 涉及两个应用:
    • 自定义安装器应用:用于APK安装及从外部SD卡/OTG设备恢复数据
    • 修改自GitHub的Termux应用:已配置权限请求逻辑

权限配置

已在应用清单中添加权限:

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

权限请求代码尝试

第一种实现

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    if (!Environment.isExternalStorageManager()) {
        Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
        String name = getPackageName();
        Uri uri = Uri.fromParts("package", name, null);
        intent.setData(uri);
        startActivity(intent);
    }
}

第二种实现

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    if (!getPackageManager().canRequestPackageInstalls()) {
        Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION, Uri.parse("package:" + BuildConfig.APPLICATION_ID));
        startActivityForResult(intent, 501);
    }
}

问题现象

两个应用均出现同一问题:

  • 授予权限后,当前发起请求的Activity中权限不生效,无法访问OTG加密狗
  • 即使关闭Activity并重启应用,仍无法访问OTG设备
  • 只有通过任务管理器彻底杀死应用进程后,重新启动才能正常访问OTG加密狗

Linux命令测试情况

通过命令行验证设备状态与权限:

  1. 执行mount命令确认Android已识别OTG加密狗
  2. 通过以下命令获取挂载路径:
    USBPATH=$(grep -E "^[^ ]+ /mnt/media_rw/[A-Z0-9]{4}-[A-Z0-9]{4} " /proc/mounts | cut -d' ' -f2)
    
  3. 执行ls $USBPATH时提示permission denied,即使已授权MANAGE_EXTERNAL_STORAGE权限仍无法访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 03:16:02