如何在Android Activity中打开某种文件类型?

问题描述 投票:0回答:1

我想让一个活动成为打开 .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。

android json file android-activity android-manifest
1个回答
0
投票

您需要多个意图过滤器来解决您想要处理的不同情况。

示例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>
© www.soinside.com 2019 - 2024. All rights reserved.