简体   繁体   English

如何在Android WebView中获取HTML页面元素(按钮,输入,图像)

[英]How to get the HTML page elements (button, input, Images ) in Android WebView

I am loading online html page in my Webview, And want to load activity against the specific button clicked from html online page (not from local HTML page) 我正在Webview中加载在线html页面,并希望针对从html在线页面(而非本地HTML页面)单击的特定按钮加载活动

I find some thing but that is not responding against my requirement. 我发现了一些东西,但这并没有回应我的要求。

@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;
        }
    });
}
    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 class has only two method. HitTestResult类只有两种方法。

getExtra() : It return String. getExtra():返回字符串。 String has HTML element which is clicked by user 字符串具有用户单击的HTML元素

getType() : It return integer. getType():返回整数。 It is used to identify which HTML element is clicked by user. 它用于标识用户单击了哪个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;
            }

        }

    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM