gpt4 book ai didi

android - 使用 Intent 过滤器重定向 Android webview

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:46:50 24 4
gpt4 key购买 nike

我有一个特定的 URL,我想将其从带有 intent 过滤器的 webview 重定向到我的应用程序中的特定 Activity 。 How to implement my very own URI scheme on Android描述了如何为浏览器页面执行此操作,但是当通过 webview 访问该 URL 时,这个相同的 Intent 过滤器不起作用。是否需要向此 Intent 过滤器添加任何其他内容以捕获这些 Web View 链接?

<intent-filter>
<action android:name="android.intent.action.VIEW"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<category android:name="android.intent.category.BROWSABLE"></category>
<data android:host="myurl.com/stuff" android:scheme="http"></data>
</intent-filter>`

最佳答案

我没有让 Intent 过滤器和 WebView 一起工作,只是在 list 上声明 Intent ,我认为它们不应该这样。 (我想知道为什么......)我认为这样做的方法是当你试图在 webview 中打开它们并创建一个 Intent 时捕获 url。

然后,对于 list 中的 Activity 注册如下:

<activity android:name=".PretendChat">
<intent-filter>
<action android:name="android.intent.action.VIEW"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<category android:name="android.intent.category.BROWSABLE"></category>
<data android:host="chat" ></data>
<data android:scheme="testing"></data>
<data android:pathPattern=".*"></data>
</intent-filter>
</activity>

当您单击如下链接时,您会期望 PretendChat Activity 打开:web View 中的“testing://chat”。为了让那发生你您在 webview 上使用的 webview 客户端需要以下代码。假设启动 webview 的 Activity 称为 WebviewActivity。

private  class TestWebViewClient extends WebViewClient       {


@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {

try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
WebviewActivity.this.startActivity(intent);


} catch(ActivityNotFoundException e) {

Log.e(LOGTAG,"Could not load url"+url);
}

return super.shouldOverrideUrlLoading(view, url);


}
}

关于android - 使用 Intent 过滤器重定向 Android webview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17905523/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com