zoukankan      html  css  js  c++  java
  • [置顶] android 与JavaScript的互相调用

    1.html代码

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
    <html>
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>  
    		<title>Android/Javascript互调Demo</title>
    		<script type="text/javascript" language="javascript">
    			function  callJavaScriptMethod()
    			{
    				document.getElementById("content").innerHTML = "Android 调用 Javascript 成功";
    			}
    		</script>
    	</head>
    	
    	<body>
    		<div ><a onClick="window.demo.callJavaMethod()" href="">点击-->JS调用Android代码</a></div>
    		<div style="margin:50px 50px 50px 50px;" id="content"></div>
    	</body>
    </html> 



    2.xml布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        
    		<WebView
    			android:id="@+id/webview"
    			android:layout_width="match_parent"
    		    android:layout_height="wrap_content" />
    		
    		<Button
    			android:id="@+id/androidCallJSBtn"
    			android:layout_width="match_parent"
    			android:layout_height="wrap_content"
    			android:text="点击 Android 调用 JavaScript"/>
    		
    </LinearLayout>
    


    3.Activity测试代码

    package com.testwebview;
    
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.widget.Button;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
    	 private WebView mWebView;  
    	 private Button androidCallJSBtn;
    	 
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		initView();
    	}
    
    
        @SuppressLint({ "JavascriptInterface", "SetJavaScriptEnabled" })
    	private void initView() {
        	
            mWebView = (WebView) findViewById(R.id.webview);  
            WebSettings mWebSettings = mWebView.getSettings();  
           
            mWebSettings.setJavaScriptEnabled(true);   //加上这句话才能使用javascript方法  
            mWebView.addJavascriptInterface(new Object() {//增加接口方法,让html页面调用  
    
            	public void callJavaMethod() {  
                   Toast.makeText(getApplicationContext(), "JS调用Android成功", Toast.LENGTH_LONG).show();
                }  
            	
            }, "demo");  
            mWebView.loadUrl("file:///android_asset/demo.html");  //加载页面  
            
            androidCallJSBtn = (Button) findViewById(R.id.androidCallJSBtn);  
            androidCallJSBtn.setOnClickListener(new Button.OnClickListener() {  //给button添加事件响应,执行JavaScript的fillContent()方法 
                public void onClick(View v) {  
                    mWebView.loadUrl("javascript:callJavaScriptMethod()");  
                }  
            });  
        }  
    }
    


    4.效果图(依次是未调用前、android调用JS、JS调用android)

        


    demo地址:http://download.csdn.net/detail/zz7zz7zz/6389669


  • 相关阅读:
    错误记录(一):VSCode
    【洛谷P4770】你的名字
    【洛谷P3177】树上染色
    【洛谷P3704】数字表格
    【CF762F】Tree nesting
    【洛谷P5064】等这场战争结束之后
    【洛谷P3346】诸神眷顾的幻想乡
    【BZOJ#2119】股市的预测
    UiPath数据抓取Data Scraping的介绍和使用
    UiPath录制器的介绍和使用
  • 原文地址:https://www.cnblogs.com/james1207/p/3365966.html
Copyright © 2011-2022 走看看