0

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

在我的清单中,我在 mainactivity 中添加了以下内容:

    <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>
4

2 回答 2

0

尝试添加

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

可以从浏览器安全调用的活动必须支持此类别。例如,如果用户正在查看网页或电子邮件并单击文本中的链接,则生成的执行该链接的 Intent 将需要 BROWSABLE 类别,因此只有支持该类别的活动才会被视为可能的操作. 通过支持此类别,您承诺调用任何匹配的 Intent 不会发生任何破坏性(无需用户干预)。

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

于 2020-11-12T18:20:57.137 回答
0

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

** 如果有人知道让我的应用打开任何链接的通用方法,请告诉我。VLC 播放器似乎可以使用任何链接打开。

    <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>
于 2020-11-15T21:19:53.437 回答