单击Webview中的文本启动活动意图

时间:2013-12-26 21:25:54

标签: android android-intent android-activity android-webview android-xml

我的xml中有一个webview,如下所示:

 <WebView
        android:id="@+id/webView"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

我正在加载webview:

String webView_text = "Lorem ipsum..............**<a><u>Link to fire intent</u></a>**";

 WebView webView= (WebView) findViewById(R.id.webView);
webView.loadData(String.format(htmlText, webView_text), "text/html", "utf-8");
        webView.setWebViewClient(new WebViewClient()
        {
            // Override URL
            public boolean shouldOverrideUrlLoading(WebView view, String url)
            {
                Intent intent = new Intent(getApplicationContext(),OtherActivity.class);
                startActivity(intent);
                return true;
            }
        });

请注意,我使用html标记创建了我的字符串(webView_text)中的链接,并覆盖了触发意图的函数。在这种情况下它不是这样做的。这里有什么问题?我不确定Android Webview是否支持该标签(我相信它应该)。这里我的错误是什么。谢谢你。

3 个答案:

答案 0 :(得分:4)

您可以通过在清单中的活动意图过滤器中定义方案来实现此目的。 对于样本创建活动(A)和活动(B)并在清单中定义如下:

<activity android:name="A" >
    <intent-filter>
        <category android:name="android.intent.category.DEFAULT" />
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="activity_a" />
    </intent-filter>
</activity>
<activity android:name="B" >
    <intent-filter>
        <category android:name="android.intent.category.DEFAULT" />
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="activity_b" />
    </intent-filter>
</activity>

如果你的html中有这样的链接:

<a href="activity_b://b">Activity B</a>

单击它时,启动活动B. 活动A与它类似。

您可以从Source Code

获取源代码

注意:如果对此方法使用webview,则必须覆盖方法shouldOverrideUrlLoading()并比较每个网址。

答案 1 :(得分:2)

我们也可以使用与textview相同的webview。

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView webView=(WebView)findViewById(R.id.link2);

        /*TextView t3 = (TextView) findViewById(R.id.link);

        t3.setText(
                Html.fromHtml(
                    "<b>text3:</b>  Text with a " +
                    "<a href=\"activity_a://a\">Activity A</a> : " +
                    "<a href=\"activity_b://b\">Activity B</a> "));
        t3.setMovementMethod(LinkMovementMethod.getInstance());*/

        String data= "<html><head></head>"+
                "<b>text3:</b>  Text with a " +
                "<a href=\"activity_a://a\">Activity A</a> : " +
                "<a href=\"activity_b://b\">Activity B</a></html> ";

        webView.loadData(data, "text/html", "utf-8");

        webView.setWebViewClient(new WebViewClient()
        {
            // Override URL
            public boolean shouldOverrideUrlLoading(WebView view, String url)
            {
                if(url.equalsIgnoreCase("activity_a://a")){
                    Intent intent=new Intent(getApplicationContext(),A.class);
                    startActivity(intent);
                }
                else if(url.equalsIgnoreCase("activity_b://b")){
                    Intent intent=new Intent(getApplicationContext(),B.class);
                    startActivity(intent);
                }
                Log.e("URL","URL "+url);
                return true;
            }
        });

    }

我希望这可以帮助别人。谢谢!

答案 2 :(得分:0)

我认为这是因为锚标签没有href属性。