如何获得Android的WebView中的HTML页面元素(按钮,输入,图像) [英] How to get the HTML page elements (button, input, Images ) in Android WebView

查看:352
本文介绍了如何获得Android的WebView中的HTML页面元素(按钮,输入,图像)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我加载在我的网页视图在线HTML页,希望对spacific按钮从HTML网页在线(而不是从本地的HTML页)

点击加载活动

我找到了一些东西,但没有响应对我的要求。

 在此输入code
在此输入code @覆盖
保护无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);    web视图=(的WebView)findViewById(R.id.webView);
    webView.getSettings()setJavaScriptEnabled(真)。
    webView.getSettings()setPluginsEnabled(真)。
    webView.setHorizo​​ntalScrollBarEnabled(假);
    webView.loadUrl(https://accounts.google.com/DisplayUnlockCaptcha);
    webView.setBackgroundColor(00000000);
   webView.setOnTouchListener(新View.OnTouchListener(){
        @覆盖
        公共布尔onTouch(视图V,MotionEvent事件){
            // TODO自动生成方法存根
             WebView.HitTestResult HR =((的WebView)V).getHitTestResult();
                Log.i(测试在OnTouch,getExtra =+ hr.getExtra()+\\ t \\ t TYPE =+ hr.getType()+
                        \\ t \\ t Ancher标签=+ HitTestResult.SRC_ANCHOR_TYPE +
                        \\ t \\ t Ancher标签=+ HitTestResult.UNKNOWN_TYPE +
                        \\ t \\ t Ancher标签=+ HitTestResult.ANCHOR_TYPE
                        );
             返回false;
        }
    });}


解决方案

  INT ANCHOR_TYPE HitTestResult击中一个HTML ::标签
    INT EDIT_TEXT_TYPE HitTestResult击中编辑文本区域
    INT EMAIL_TYPE HitTestResult击中的电子邮件地址
    INT GEO_TYPE HitTestResult击中地图地址
    INT IMAGE_ANCHOR_TYPE HitTestResult击中一个HTML ::其中包含标记HTML :: IMG
    INT IMAGE_TYPE HitTestResult击中一个HTML :: img标签
    INT PHONE_TYPE HitTestResult击中一个电话号码
    INT SRC_ANCHOR_TYPE HitTestResult击中一个HTML ::一个标签,SRC = HTTP
    INT SRC_IMAGE_ANCHOR_TYPE HitTestResult击中一个HTML ::有标签SRC = HTTP + HTML :: IMG
    INT UNKNOWN_TYPE默认HitTestResult,其中目标是未知

HitTestResult类只有两个方法。

getExtra():它返回的字符串。字符串有一个由用户点击HTML元素

的getType():它返回整数。它是用来识别HTML元素是由用户点击

 公共类MyWebView延伸活动{
        / **当第一次创建活动调用。 * /
        字符串标记= this.getClass()getSimpleName()。
        西弗吉尼亚州的WebView;
        @覆盖
        公共无效的onCreate(捆绑savedInstanceState){
            super.onCreate(savedInstanceState);
            的setContentView(R.layout.main);
            WV =(的WebView)findViewById(R.id.MyWebView);
            wv.getSettings()setJavaScriptEnabled(真)。
            wv.setWebViewClient(新VideoWebViewClient());
            wv.getSettings()setUserAgentString(Mozilla的/ 4.0(兼容; MSIE 5.01; Windows NT的5.0));
            wv.loadUrl(http://www.w3schools.com/html/tryit.asp?filename=tryhtml_form_radio);
            wv.setOnTouchListener(新View.OnTouchListener(){                公共布尔onTouch(视图V,MotionEvent事件){
                    WebView.HitTestResult HR =((的WebView)V).getHitTestResult();                    Log.i(TAGgetExtra =+ hr.getExtra()+\\ t \\ t TYPE =+ hr.getType());
                    返回false;
                }
            });
        }
        私有类VideoWebViewClient扩展WebViewClient {
            @覆盖
            公共布尔shouldOverrideUrlLoading(的WebView视图,字符串URL){                view.loadUrl(URL);                返回false;
            }        }    }

I am loading online html page in my Webview, And want to load activity against the spacific button clicked from html online page (not from local HTML page)

I find some thing but that is not responding against my requirement.

enter code here
enter code here@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) {
            // TODO Auto-generated method stub
             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.

getExtra() : It return String. String has HTML element which is clicked by user

getType() : It return integer. It is used to identify which HTML element is clicked by user.

    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;
            }

        }

    }

这篇关于如何获得Android的WebView中的HTML页面元素(按钮,输入,图像)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆