Web 浏览器应用程序 - 如何拦截 URL 意图?
Posted
技术标签:
【中文标题】Web 浏览器应用程序 - 如何拦截 URL 意图?【英文标题】:Web browser application - how to intercept URL intents? 【发布时间】:2019-09-27 07:25:02 【问题描述】:我有一个自定义 ROM,除了 WebView Browser Tester 之外没有默认浏览器。我开发了自己的网络浏览器应用程序(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
browser Tester 应用程序启动和加载链接。有人可以告诉我如何将我的应用程序设置为默认浏览器应用程序或使用任何特殊意图来帮助在单击任何URL
时启动此活动?
【问题讨论】:
【参考方案1】:尝试添加两个意图过滤器
<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>
【讨论】:
【参考方案2】:为此,您必须确定启动 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 链接上已有答案
【讨论】:
以上是关于Web 浏览器应用程序 - 如何拦截 URL 意图?的主要内容,如果未能解决你的问题,请参考以下文章