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

Android TV平台Shared Storage权限适配问题求助

Android TV 共享存储权限获取方案

问题原因

Android TV 系统默认没有预装支持ACTION_OPEN_DOCUMENT_TREE的文件选择器应用,导致调用createOpenDocumentTreeIntent()后出现「您没有可以执行此操作的应用」的提示。

可行方案(非媒体存储相关)

方案1:申请MANAGE_EXTERNAL_STORAGE权限

这是Android 11及以上版本中获取整个外部存储访问权限的官方方式,适用于需要完整共享存储访问的场景。

  1. 在Manifest中声明权限
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
    android:minSdkVersion="30" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
    android:maxSdkVersion="29" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    android:maxSdkVersion="29" />
  1. 检查权限并发起申请
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    if (!Environment.isExternalStorageManager()) {
        Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
        intent.setData(Uri.parse("package:" + getPackageName()));
        startActivityForResult(intent, MY_PERMISSIONS_GRANT_SHARED_STORAGE);
    } else {
        // 已获得权限,执行后续业务逻辑
    }
} else {
    // Android 10及以下版本,使用传统读写权限申请流程
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this,
                new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                MY_PERMISSIONS_GRANT_SHARED_STORAGE);
    }
}
  1. 处理权限回调
    在onActivityResult(Android 10及以下使用onRequestPermissionsResult)中检查权限是否授予,再执行对应操作。

方案2:自定义适配TV的文件浏览UI

如果仅需特定目录的访问权限,可自行实现适配Android TV遥控器操作的文件浏览器,通过SAF框架完成目录授权:

  1. 手动构建SAF目录Uri并申请持久化权限
// 构建外部存储根目录的SAF Uri
Uri treeUri = DocumentsContract.buildTreeDocumentUri("com.android.externalstorage.documents", "primary:");
// 申请持久化读写权限
getContentResolver().takePersistableUriPermission(treeUri, 
    Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

注:此方式需预先明确目标目录的Uri,实用性有限,更推荐方案1。

注意事项

  • MANAGE_EXTERNAL_STORAGE权限需符合谷歌Play审核政策,仅文件管理器、备份工具等特定类型应用可申请,提交审核时需明确说明权限使用场景。
  • 自定义UI需适配Android TV的遥控器焦点导航逻辑,符合TV端交互规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:10:31