0

我正在我的 Webview 中加载在线 html 页面,并希望针对从 html 在线页面(而不是本地 HTML 页面)单击的特定按钮加载活动

我发现了一些东西,但这并不符合我的要求。

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

    webView = (WebView) findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setPluginsEnabled(true);
    webView.setHorizontalScrollBarEnabled(false);
    webView.loadUrl("https://accounts.google.com/DisplayUnlockCaptcha");
    webView.setBackgroundColor(0x00000000);

    webView.setOnTouchListener(new View.OnTouchListener(){
        @Override
        public boolean onTouch(View v, MotionEvent event) {
             WebView.HitTestResult hr = ((WebView)v).getHitTestResult();
                Log.i("TESTING In OnTouch ", "getExtra = "+ hr.getExtra() + "\t\t Type=" + hr.getType()+
                        "\t\t Ancher Tag = " +HitTestResult.SRC_ANCHOR_TYPE+
                        "\t\t Ancher Tag = " +HitTestResult.UNKNOWN_TYPE+
                        "\t\t Ancher Tag = " +HitTestResult.ANCHOR_TYPE
                        );
             return false;
        }
    });
}
4

1 回答 1

1
    int     ANCHOR_TYPE     HitTestResult for hitting a HTML::a tag
    int     EDIT_TEXT_TYPE  HitTestResult for hitting an edit text area
    int     EMAIL_TYPE  HitTestResult for hitting an email address
    int     GEO_TYPE    HitTestResult for hitting a map address
    int     IMAGE_ANCHOR_TYPE   HitTestResult for hitting a HTML::a tag which contains HTML::img
    int     IMAGE_TYPE  HitTestResult for hitting an HTML::img tag
    int     PHONE_TYPE  HitTestResult for hitting a phone number
    int     SRC_ANCHOR_TYPE     HitTestResult for hitting a HTML::a tag with src=http
    int     SRC_IMAGE_ANCHOR_TYPE   HitTestResult for hitting a HTML::a tag with src=http + HTML::img
    int     UNKNOWN_TYPE    Default HitTestResult, where the target is unknown 

HitTestResult 类只有两个方法。

getExtra() :它返回字符串。字符串具有用户单击的 HTML 元素

getType() :它返回整数。它用于识别用户单击了哪个 HTML 元素。

    public class MyWebView extends Activity {
        /** Called when the activity is first created. */
        String TAG = this.getClass().getSimpleName();
        WebView wv;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            wv = (WebView) findViewById(R.id.MyWebView);
            wv.getSettings().setJavaScriptEnabled(true);
            wv.setWebViewClient(new VideoWebViewClient());
            wv.getSettings().setUserAgentString("Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
            wv.loadUrl("http://www.w3schools.com/html/tryit.asp?filename=tryhtml_form_radio");
            wv.setOnTouchListener(new View.OnTouchListener() {

                public boolean onTouch(View v, MotionEvent event) {
                    WebView.HitTestResult hr = ((WebView)v).getHitTestResult();

                    Log.i(TAG, "getExtra = "+ hr.getExtra() + "\t\t Type=" + hr.getType());
                    return false;
                }
            });
        }
        private class VideoWebViewClient extends WebViewClient {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {

                view.loadUrl(url);

                return false;
            }

        }

    }
于 2013-09-11T05:35:50.497 回答