Web浏览器应用程序-如何拦截URL意图?

时间:2019-05-09 12:44:04

标签: android android-intent android-activity android-manifest intentfilter

我有一个自定义ROM,除了 WebView Browser Tester 之外没有其他默认浏览器。我已经开发了自己的Web浏览器应用程序(webviewclient活动),并将其安装在手机中。现在,我希望无论用户单击电话时使用哪个URL,我的浏览器应用程序都将拦截并加载此URL。这是我在intent_filter中使用的

 <intent_filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent_filter>

但是它无法正常工作,并且仍然WebView浏览器Tester应用程序启动和加载链接。有人可以告诉我如何将我的应用程序设置为默认浏览器应用程序,或者使用任何特殊的意图来帮助在单击任何URL时启动此活动吗?

2 个答案:

答案 0 :(得分:2)

尝试添加两个意图过滤器

        <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"
                android:host="*"/>
        </intent-filter>
        <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="https"
                android:host="*" />
        </intent-filter>

答案 1 :(得分:0)

为此,您必须确定Activity应用程序的启动Browser,如下所示:

Intent intent = new Intent();
intent.setComponent(new ComponentName("/*Pass your browser package*/","com.google.android.browser.BrowserActivity /*And pass Browser Activity*/"));
intent.setAction("android.intent.action.VIEW");
intent.addCategory("android.intent.category.BROWSABLE");
Uri uri = Uri.parse(url);
intent.setData(uri);
try
{
    startActivity(intent);
}
catch (Exception e)
{
   e.printStackTrace();
}

this链接上已有答案