如何让 Android 知道我的应用可以打开 MP4 文件

How to let Android know my app can open MP4 files

我不知道如何正确表达这个问题。不过我会尽力的。当我在手机网络浏览器中单击直接视频 link 示例 (https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/1080/Big_Buck_Bunny_1080_10s_1MB.mp4) 时,浏览器会询问我是否要打开或下载文件。我选择了打开,系统为我提供了一系列可以用来打开文件的应用程序。问题是我的应用程序未列出。如果我突出显示并分享 link,我的应用就会被列出。但是我希望它在我打开或共享时同时列出。

在我的清单中,我将以下内容添加到主要活动中:

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter android:scheme="http"
            tools:ignore="AppLinkUrlError">
            <action android:name="android.intent.action.SEND"/>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:mimeType="video/*"/>
        </intent-filter>
        <intent-filter android:scheme="http"
            tools:ignore="AppLinkUrlError">
            <action android:name="android.intent.action.SEND"/>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <data android:mimeType="text/plain"/>
        </intent-filter>
    </activity>

尝试添加

<category android:name="android.intent.category.BROWSABLE"/>

Activities that can be safely invoked from a browser must support this category. For example, if the user is viewing a web page or an e-mail and clicks on a link in the text, the Intent generated execute that link will require the BROWSABLE category, so that only activities supporting this category will be considered as possible actions. By supporting this category, you are promising that there is nothing damaging (without user intervention) that can happen by invoking any matching Intent.

您可能还需要添加 <action android:name="android.intent.action.VIEW"/>(过滤器中可以有多个操作),但我不确定此处是否有必要。

catustictacs 引导我朝着正确的方向前进。我一直在寻找一种通用的方式来打开我的应用程序中的任何 link。然而,这似乎是不可能的。您必须描述每个服务器的数据类型。 :( 下面我将展示我的意图过滤器的代码。它很乱,但它适用于我指定的网站。

** 如果有人知道打开我的应用程序的通用方法 link 请告诉我。 VLC 播放器似乎可以用任何 link.

打开
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https"
                android:host="test-videos.co.uk"/>
            <!--<data android:mimeType="video/*" />-->
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https"
                android:host="test-videos.co.uk"/>
            <data android:scheme="https"
                android:host="storage.googleapis.com"/>
            <!--<data android:mimeType="text/plain" />-->
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:mimeType="video/*" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:mimeType="text/plain" />
        </intent-filter>
    </activity>