android - 在某些三星 Android 设备上未找到处理意图 OPEN_DOCUMENT_TREE 的活动
问题描述
我的 android 应用程序打开“文档树”选择器以提示对外部存储完整目录的读取权限(根据 android 10+ 范围存储规则)。
相关代码
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
startActivityForResult(intent, REQUEST_ID_PERMISSION);
适用于所有测试版本和设备变体。但是,我的 crashlytics 显示以下错误在某些三星设备上发生了相当多的次数。(A20 - Android 9 | S10/10+ - Android 10 和 11 | Note20 - Android 11)
Fatal Exception: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.OPEN_DOCUMENT_TREE flg=0x40 }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2071)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1717)
at android.app.Activity.startActivityForResult(Activity.java:5252)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
这个问题的任何潜在原因和解决方案,知道:
- 我可以在启动 OPEN_DOCUMENT_TREE 之前检查活动的可用性,但这会导致文档选择器无法打开。
- 一些旧答案建议添加intent.setType("*/*"),但这不再有效,并导致崩溃,原因在另一个问题中解释(我再也找不到了,但在这里无关紧要)。
- 我还认为这很可能与某些用户在他们的设备上禁用了 FILES 应用程序这一事实有关,因为很可能错误并没有发生在上面列出的所有设备型号上,而是发生在一个子集上。
谢谢你。
解决方案
推荐阅读
- javascript - 使用 Electron 在 HTML 中导入 JQuery
- python - 如何使用 Python 生成器区分这两个文件
- r - 如何将 R^2 和回归值添加到 ggplot2 中的多因素设计
- python - Numpy:获取对应数组具有特定值的数组行导致IndexError:布尔索引与索引数组不匹配
- python - 如何在python中使用pdfminer从在线PDF中提取文本
- c# - 如何设置 http 标头以便在 ASP.NET Core 中不发生缓存?
- sql - 使用“parititon by”和窗口函数在postgres中返回多于一行?
- python - 使用 glob 排除子文件夹
- postgresql - Postgres 在“A OR exists(B)”查询中进行优化
- csv - 如何在 GoogleShell 中使用 gsutil compose 并跳过第一行?