webjs与Android(网页和安卓)交互

来源:互联网 发布:吉首大学网络授课 编辑:程序博客网 时间:2024/05/22 12:49


把网页文件放在main文件夹下assets里面

web部分代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>调用Android组件测试</title>
<script type="text/javascript">
    function show(info){
        document.getElementById("shows").innerHTML = info;
    }
</script>
</head>

<body>
<b>测试</b>
<br />
<button onClick="window.hello.javaMethod('param')">启动hello world Activity</button>
<br />
<hr  color="#99FF00"/>
<button onClick="window.hello.showAndroid()">显示android内容</button>
<br />
<textarea id= "shows"  cols="20" rows="10"> 暂无记录 </textarea>
<br />

</body>
</html>



Android部分代码:

public class MainActivity extends Activity {


    
    private WebView webView;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //资源ID
        webView = (WebView) findViewById(R.id.web);
        //记载页面
        webView.loadUrl("file:///android_asset/Untitled1.html");
        
        //支持js交互
        webView.getSettings().setJavaScriptEnabled(true);
        /**
         * 1.JavaScript对象
         * 2.别名  在交互是 htmel中会使用
         *
         */
        webView.addJavascriptInterface(this, "test");
        
        
        
        //设置编码格式
        webView.getSettings().setDefaultTextEncodingName("utf-8");
        webView.setWebChromeClient(new WebChromeClient(){
            //得到页面的标题
            @Override
            public void onReceivedTitle(WebView view, String title) {
                // TODO Auto-generated method stub
                super.onReceivedTitle(view, title);
            }
            //得到当前页面加载的进度
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                // TODO Auto-generated method stub
                super.onProgressChanged(view, newProgress);
            }
        });
        
        webView.setWebViewClient(new WebViewClient(){
            //页面正在加载
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                // TODO Auto-generated method stub
                super.onPageStarted(view, url, favicon);
            }
            //页面加载完成
            @Override
            public void onPageFinished(WebView view, String url) {
                // TODO Auto-generated method stub
                super.onPageFinished(view, url);
            }
            
        });
    }
    
    public void butCallJsMethod(View v){
        //交互  Android向Html传值
        webView.loadUrl("javascript:androidCallJsMethod('杨栓国民老公')");
        
    }
    //接受html传来的值
    @JavascriptInterface   //注解 必须要加
    public void sayHello(String name){
        Toast.makeText(MainActivity.this, name, 1).show();
    }
    
}
原创粉丝点击