首页 > 解决方案 > 在某些三星 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)

这个问题的任何潜在原因和解决方案,知道:

  1. 我可以在启动 OPEN_DOCUMENT_TREE 之前检查活动的可用性,但这会导致文档选择器无法打开。
  2. 一些旧答案建议添加intent.setType("*/*"),但这不再有效,并导致崩溃,原因在另一个问题中解释(我再也找不到了,但在这里无关紧要)。
  3. 我还认为这很可能与某些用户在他们的设备上禁用了 FILES 应用程序这一事实有关,因为很可能错误并没有发生在上面列出的所有设备型号上,而是发生在一个子集上。

谢谢你。

标签: androidsamsung-mobile

解决方案


推荐阅读