Android 12下无法创建OPEN_DOCUMENT_TREE活动问题求助
问题原因及解决方案
核心原因
你给ACTION_OPEN_DOCUMENT_TREE意图添加了Intent.CATEGORY_OPENABLE类别,这是错误操作。CATEGORY_OPENABLE是为选择单个文件的意图(比如ACTION_OPEN_DOCUMENT)设计的,而ACTION_OPEN_DOCUMENT_TREE是用于选择目录的系统意图,两者不兼容,导致系统找不到能同时处理该意图和类别的Activity,进而抛出ActivityNotFoundException。
修复步骤
直接移除intent.addCategory(Intent.CATEGORY_OPENABLE);这行代码即可。修改后的getProfilesFolder()方法如下:
private void getProfilesFolder() { Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); startActivityForResult(intent, requestCode); }
额外注意事项
- API32及以上版本中,使用
ACTION_OPEN_DOCUMENT_TREE无需额外申请读写外部存储权限(通过SAF框架操作),但如果应用需要兼容更低版本,仍需处理对应权限逻辑。 - 当前初始化
ProfileFolderUri的代码Uri.parse("content://com.android.externalstorage.documents/tree/")是无效Uri,后续替换为从偏好设置读取的有效Uri时,需确保格式正确。
内容的提问来源于stack exchange,提问作者Jan Petersen
相关产品推荐
相关产品推荐

