android.intent.action.ACTION_OPEN_DOCUMENT_TREE 还需要 setType() 吗?
Does android.intent.action.ACTION_OPEN_DOCUMENT_TREE still require setType()?
this post 解释的以下带有 setType() 的代码在最近之前工作正常?
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.setType("*/*");
intent.setFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
startActivityForResult(intent, REQUEST_CODE_OPEN_DIRECTORY);
现在,此代码在我测试过的 Android 个模拟器和物理设备上抛出 ActivityNotFoundException。我不确定它是否会在所有设备上抛出 ActivityNotFoundException。不幸的是,我不知道开发环境的哪个变化导致了这个。如果去掉setType(),它在所有测试过的模拟器和物理设备上都能正常工作。
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.setFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
startActivityForResult(intent, REQUEST_CODE_OPEN_DIRECTORY);
谁能阐明 setType() 要求的当前状态?
在startActivity
之前使用resolveActivity
以避免ActivityNotFoundException
if (intent.resolveActivity(getPackageManager()) = null) {
startActivityForResult(intent, REQUEST_CODE_OPEN_DIRECTORY);
}
这取自DocumentsUI manifest in Android 10:
<intent-filter>
<action android:name="android.intent.action.OPEN_DOCUMENT" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.OPENABLE" />
<data android:mimeType="*/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.OPEN_DOCUMENT_TREE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
目录选择器的意图过滤器没有定义任何 MIME 类型。这意味着对于 activity 打开您的意图不能有任何明确的 MIME 类型,包括 */*
.
保留 MIME 类型 null
。您正在选择一个目录。目录没有有意义的 MIME 类型。
您提到的 post 是关于 OPEN_DOCUMENT
的,它确实需要明确的 MIME 类型。
this post 解释的以下带有 setType() 的代码在最近之前工作正常?
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.setType("*/*");
intent.setFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
startActivityForResult(intent, REQUEST_CODE_OPEN_DIRECTORY);
现在,此代码在我测试过的 Android 个模拟器和物理设备上抛出 ActivityNotFoundException。我不确定它是否会在所有设备上抛出 ActivityNotFoundException。不幸的是,我不知道开发环境的哪个变化导致了这个。如果去掉setType(),它在所有测试过的模拟器和物理设备上都能正常工作。
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.setFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
startActivityForResult(intent, REQUEST_CODE_OPEN_DIRECTORY);
谁能阐明 setType() 要求的当前状态?
在startActivity
之前使用resolveActivity
以避免ActivityNotFoundException
if (intent.resolveActivity(getPackageManager()) = null) {
startActivityForResult(intent, REQUEST_CODE_OPEN_DIRECTORY);
}
这取自DocumentsUI manifest in Android 10:
<intent-filter>
<action android:name="android.intent.action.OPEN_DOCUMENT" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.OPENABLE" />
<data android:mimeType="*/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.OPEN_DOCUMENT_TREE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
目录选择器的意图过滤器没有定义任何 MIME 类型。这意味着对于 activity 打开您的意图不能有任何明确的 MIME 类型,包括 */*
.
保留 MIME 类型 null
。您正在选择一个目录。目录没有有意义的 MIME 类型。
您提到的 post 是关于 OPEN_DOCUMENT
的,它确实需要明确的 MIME 类型。