我想让一个活动成为打开 .json 文件类型的选项。例如,当我在资源管理器中单击 .json 文件时,我希望在此活动中打开它(或有打开它的选项)。为了实现这一点,我尝试在清单中的活动中添加路径模式、方案和主机。没有成功。资源管理器显示“没有应用程序可以打开此文件。”在 StackOverflow 上搜索后,我尝试添加 mimeType。仍然没有成功。我已经从现有的 StackOverflow 问题中尝试了 20 多个不同的答案,但没有成功。以下是我尝试过的一些答案:这里,这里,这里。 这是我的活动:
<activity
android:name=".JsonActivity"
android:label="Json">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="content" />
<data android:scheme="file" />
<data android:host="*" />
<data android:pathPattern=".*\\.json" />
</intent-filter>
</activity>
我做错了什么?我确保添加了 WRITE_EXTERNAL_STORAGE 和 READ_EXTERNAL_STORAGE 权限以及类别 BROWSABLE 和操作 VIEW。
您需要多个意图过滤器来解决您想要处理的不同情况。
示例1,处理没有mimetypes的http请求:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:host="*" />
<data android:pathPattern=".*\\.json" />
</intent-filter>
使用 mimetypes 进行处理,其中后缀无关紧要:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:host="*" />
<data android:mimeType="application/json" />
</intent-filter>
处理来自文件浏览器应用程序的意图:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="file" />
<data android:host="*" />
<data android:pathPattern=".*\\.json" />
</intent-filter>