使用intentfilter重定向Android webview

我有一个特定的url,我希望从带有意图filter的网页视图重定向到我的应用中的特定活动。 如何在Android上实现我自己的URI方案描述了如何为浏览器页面执行此操作,但是当通过webview访问该URL时,此相同的intentfilter不起作用。 还有什么需要添加到此intentfilter以捕获这些webview链接?

     ` 

我没有意图filter和webview一起工作只是声明清单上的意图,我认为他们不应该。 (我想知道为什么……)我认为,当你试图在webview中打开它们并创建一个意图时,这样做的方法是捕获URL。

然后,对于清单中的活动寄存器,如下所示:

           

您可以在单击以下链接时打开PretendChat活动:webview中的“testing:// chat”。 为了实现这一点,您需要在webview上使用的webview客户端上使用以下代码。 假设启动webview的活动称为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); } } 

我让它工作的唯一方法是使用虚拟文件链接并使用loadDataWithBaseURL加载URL并使用数据中的相对链接。 最新的WebView似乎只接受有效的链接,我无法使用它来处理活动的自定义意图。

如果我尝试了另一种方案,例如“my-app”而不是“file”,则shouldOverrideUrlLoading中的url会显示为“about:blank”。

我还想将parameter passing给要在Bundle中打开的活动。

  webView.loadDataWithBaseURL("file:///android_asset", w.Definition, "text/html", "utf-8", null); webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.startsWith("file")) { Intent intent = new Intent(DictWordActivity.this, DictWordActivity.class); intent.putExtra("word", Uri.parse(url).getLastPathSegment()); startActivity(intent); return true; } else return false; } }); 

我创建了这样的相关链接:

 "" + word + ""); 

如果有人有更好的解决方案,我想知道。