将我的浏览器添加到Android的默认浏览器选择列表中?

2022-09-04 19:30:24

按照如何在Android的默认浏览器选择列表中添加我的浏览器的建议进行操作?我已经在文件中指定了我的:Intentmanifest

<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http"/> 
<data android:scheme="https"/> 
</intent-filter>

我还添加了权限:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

但是我的浏览器仍然没有显示在设置中浏览器类别的默认应用程序选项中。

我是否需要执行任何其他操作才能使我的应用显示在浏览器的默认选项中?


答案 1

尝试在目标活动中包含,如开发人员文档所述:<category android:name="android.intent.category.BROWSABLE" />intent-filter

如果用户正在查看网页或电子邮件并单击文本中的链接,则 Intent 生成的执行该链接将需要该类别,因此只有支持此类别的活动才会被视为可能的操作。BROWSABLE

为了从可单击的链接访问 ,需要它。没有它,单击链接将无法解析为应用。intent-filter

<activity ...>

    <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" />
    </intent-filter>

</activity>

.

其他提示:(如果要强制应用为默认浏览器)

Android 6.0(API 级别 23)及更高版本的 Android 应用链接允许应用将自己指定为给定类型链接的默认处理程序。如果用户不希望应用成为默认处理程序,他们可以从其设备的系统设置中重写此行为。

要为应用启用链接处理验证,请在标记中设置:android:autoVerify="true"intent-filter

<activity ...>

    <intent-filter android:autoVerify="true">

         ...

    </intent-filter>

</activity>

答案 2

您需要考虑可能适用的各种情况。

请参阅下面的意图过滤器。最后还提供了链接。

<activity android:name="BrowserActivity"
                  android:label="@string/application_name"
                  android:launchMode="singleTask"
                  android:alwaysRetainTaskState="true"
                  android:configChanges="orientation|keyboardHidden"
                  android:theme="@style/BrowserTheme"
                  android:windowSoftInputMode="adjustResize" >
            <intent-filter>
                <action android:name="android.speech.action.VOICE_SEARCH_RESULTS" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <!-- For these schemes were not particular MIME type has been
                 supplied, we are a good candidate. -->
            <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="about" />
                <data android:scheme="javascript" />
            </intent-filter>
            <!--  For these schemes where any of these particular MIME types
                  have been supplied, we are a good candidate. -->
            <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:scheme="https" />
                <data android:scheme="inline" />
                <data android:mimeType="text/html"/>
                <data android:mimeType="text/plain"/>
                <data android:mimeType="application/xhtml+xml"/>
                <data android:mimeType="application/vnd.wap.xhtml+xml"/>
            </intent-filter>
            <!-- We are also the main entry point of the browser. -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.BROWSABLE" />
            </intent-filter>
            <!-- The maps app is a much better experience, so it's not
                 worth having this at all... especially for a demo!
            <intent-filter android:label="Map In Browser">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.item/postal-address" />
            </intent-filter>
            -->
            <intent-filter>
                <action android:name="android.intent.action.WEB_SEARCH" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="" />
                <data android:scheme="http" />
                <data android:scheme="https" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.MEDIA_SEARCH" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <meta-data android:name="android.app.searchable"
                    android:resource="@xml/searchable" />
        </activity>

查看您可能需要的不同类型的意图过滤器,以涵盖所有可能的情况。

请参阅此链接 - froyo 浏览器的完整清单文件。