[android] WebView与Js交互

[android] WebView与Js交互,第1张

概述获取WebView对象 调用WebView对象的getSettings()方法,获取WebSettings对象 调用WebSettings对象的setJavaScriptEnabled()方法,设置j

获取WebVIEw对象

调用WebVIEw对象的getSettings()方法,获取WebSettings对象

调用WebSettings对象的setJavaScriptEnabled()方法,设置Js可用,参数:布尔值

在判断是否支持Js的时候,不要用alert(),默认不起作用,可以先用document.write()测试

 

调用WebVIEw对象的addJavaScriptInterface(obj,interfacename)方法,添加Js接口,参数:Object对象,String接口名称(这个对象在Js中的别名)

定义一个内部类MyJavaScript

定义一个方法showToast(),显示吐司,API版本大于17需要加注解@JavaScriptInterface

 

java代码:

package com.tsh.mywebvIEw;import androID.annotation.Suppresslint; androID.app.Activity; androID.app.ProgressDialog; androID.graphics.Bitmap; androID.os.Bundle; androID.vIEw.KeyEvent; androID.vIEw.Menu; androID.vIEw.MenuItem; androID.vIEw.Window; androID.webkit.JavaScriptInterface; androID.webkit.WebSettings; androID.webkit.WebVIEw; androID.webkit.WebVIEwClIEnt; androID.Widget.Toast;public class MainActivity extends Activity {    private WebVIEw webvIEw;     ProgressDialog pd;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestwindowFeature(Window.FEATURE_NO_Title);        setContentVIEw(R.layout.activity_main);                pd=new ProgressDialog(this);        pd.setMessage("正在加载...");                        //webvIEw的简单设置        webvIEw=(WebVIEw) findVIEwByID(R.ID.wv_internet);        http://100.65.187.106/test.PHP        webvIEw.loadUrl("http://100.65.187.106/test.PHP");        WebSettings websettings=webvIEw.getSettings();        websettings.setSupportZoom(true);        websettings.setBuiltInZoomControls();                Js交互        new MyJavaScript().showToast("111");        websettings.setJavaScriptEnabled();        webvIEw.addJavaScriptInterface(new MyJavaScript(),"AndroID");        webvIEw.loadUrl("JavaScript:documentWrite('测试')");                webvIEw.setWebVIEwClIEnt(new WebVIEwClIEnt(){            @OverrIDe             onPageStarted(WebVIEw vIEw,String url,Bitmap favicon) {                pd.show();            }            @OverrIDe             onPageFinished(WebVIEw vIEw,String url) {                pd.dismiss();            }        });            }    暴露给Js的功能接口    class MyJavaScript{        显示吐司         如果target 大于等于API 17,则需要加上如下注解        @JavaScriptInterface         showToast(String text) {            Toast.makeText(MainActivity.this,text,1).show();        }        显示loading showProgressDialog(String text) {            pd.setMessage(text);            pd.show();        }    }    后退键    @OverrIDe    boolean onKeyDown(int keyCode,KeyEvent event) {        if(keyCode==KeyEvent.KEYCODE_BACK&&webvIEw.canGoBack()){            webvIEw.goBack();            return ;        }        .onKeyDown(keyCode,event);    }    菜单键boolean onCreateOptionsMenu(Menu menu) {        menu.add(0,"刷新");        menu.add(0,1,"后退");        .onCreateOptionsMenu(menu);    }    菜单点击事件 onoptionsItemSelected(MenuItem item) {        switch (item.getorder()) {        case 0:            webvIEw.reload();            break;        case 1:            if(webvIEw.canGoBack()){                webvIEw.goBack();            }            case 2(webvIEw.canGoForward()){                webvIEw.goForward();            }            .onoptionsItemSelected(item);    }}

 

Js代码:

 

<HTML>head>    Meta http-equiv="Content-Type" content="text/HTML; charset=utf-8"/>    Title>测试androID程序</body>    测试androID和Js交互    brbutton onClick="showToast()">显示吐司button="showProgressDialog()">显示loadingscript type="text/JavaScript">function showToast(){    AndroID.showToast("显示吐司);} showProgressDialog(){    AndroID.showProgressDialog(显示进度条);}script>

 

 

总结

以上是内存溢出为你收集整理的[android] WebView与Js交互全部内容,希望文章能够帮你解决[android] WebView与Js交互所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1121154.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存