一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Android中調(diào)用js方法及js中調(diào)用本地方法

 Crazy Zeng 2014-12-22

Android中調(diào)用js方法及js中調(diào)用本地方法,有需要的朋友可以參考下。


Android中內(nèi)置了WebKit模塊,而該模塊的Java層視圖類就是WebView,所有需要使用Web瀏覽器功能的Android都需要創(chuàng)建該視圖類對象顯示和處理請求的網(wǎng)絡資源。目前WebKit支持Http、Https、Ftp和JavaScript請求。下面我們重點看一下如何在Android中調(diào)用JavaScript方法以及如何在js中調(diào)用本地方法。

1、在Assets下放一個簡單的html文件jstest.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www./TR/html40/strict.dtd">
<HTML>
<HEAD>
<meta name="viewport" content="width=device-width, target-densitydpi=device-dpi" />
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script>
   function showMsg(){
      alert("hello world!");
   }
   function showMsgInAndroid(){
      myjs.showMsg('hello in android!');
   }
</script>
</HEAD>
<BODY>
<span>測試js使用</span>

<button id='btntest' onclick='showMsgInAndroid()'>調(diào)用android方法</button>
</BODY>
</HTML>

2、布局文件main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
	android:id="@+id/rl_main"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	xmlns:android="http://schemas./apk/res/android"
    >
   <WebView 
       android:id="@+id/wv_test"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:layout_above="@+id/btn_showmsg"/>
   <Button 
       android:id="@+id/btn_showmsg"
       android:layout_width="200dip"
       android:layout_height="40dip"
       android:layout_alignParentBottom="true"
       android:layout_centerHorizontal="true"
       android:text="調(diào)用html中js方法"/>
</RelativeLayout>

3、然后是Activity,MainActivity.java

package com.harold.jstest;

import com.harold.base.JSKit;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.Button;

public class MainActivity extends Activity {
	
	private WebView mWebView;
	private Button btnShowInfo;
	private JSKit js;
	private Handler mHandler = new Handler();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		//初始化控件
		mWebView = (WebView) findViewById(R.id.wv_test);
		btnShowInfo = (Button) findViewById(R.id.btn_showmsg);
		//實例化js對象
		js = new JSKit(this);
		//設置參數(shù)
		mWebView.getSettings().setBuiltInZoomControls(true);
		//內(nèi)容的渲染需要webviewChromClient去實現(xiàn),設置webviewChromClient基類,解決js中alert不彈出的問題和其他內(nèi)容渲染問題
		mWebView.setWebChromeClient(new WebChromeClient());
		mWebView.getSettings().setJavaScriptEnabled(true);
		//把js綁定到全局的myjs上,myjs的作用域是全局的,初始化后可隨處使用
		mWebView.addJavascriptInterface(js, "myjs");
		
		mWebView.loadUrl("file:///android_asset/jstest.html");
		
		btnShowInfo.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				mHandler.post(new Runnable() {
					@Override
					public void run() {
						//調(diào)用 HTML 中的javaScript 函數(shù)
						mWebView.loadUrl("javascript:showMsg()");
					}
				});
			}
		});
	}

}

4、最后是綁定全局js的類JSKit.java
package com.harold.base;

import android.widget.Toast;

import com.harold.jstest.MainActivity;

public class JSKit {
	private MainActivity ma;
	
	public JSKit(MainActivity context) {
		this.ma = context;
	}
	
	public void showMsg(String msg) {
		Toast.makeText(ma, msg, Toast.LENGTH_SHORT).show();
	}
}

例子比較簡單,代碼里都加了注釋,這里就不多說了,本示例用的本地的html,如果訪問網(wǎng)絡中的網(wǎng)頁,別忘記在AndroidManifest.xml中加權限

<uses-permission android:name="android.permission.INTERNET"/>
源碼在下面:

------> 源碼下載<------


    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日韩综合国产欧美一区| 日系韩系还是欧美久久| 暴力三级a特黄在线观看| 人妻内射在线二区一区| 在线观看视频成人午夜| 国产白丝粉嫩av在线免费观看| 国产日韩综合一区在线观看| 最新日韩精品一推荐日韩精品| 一区二区三区日韩在线| 国产伦精品一区二区三区精品视频| 久久综合亚洲精品蜜桃| 日本午夜一本久久久综合| 国产又长又粗又爽免费视频| 在线观看国产午夜福利| 欧美一级黄片免费视频| 色婷婷丁香激情五月天| 久久亚洲精品成人国产| 亚洲日本久久国产精品久久| 国产一级内射麻豆91| 亚洲日本加勒比在线播放| 亚洲综合精品天堂夜夜| 国产精品欧美在线观看| 开心激情网 激情五月天| 国产又粗又长又大的视频| 国产又大又硬又粗又黄| 亚洲国产日韩欧美三级| 欧美一区二区三区高潮菊竹| 日本人妻的诱惑在线观看| 久久本道综合色狠狠五月| 中文字幕无线码一区欧美| 亚洲专区中文字幕在线| 国产免费自拍黄片免费看| 欧美多人疯狂性战派对| 国产成人精品一区二区在线看| 国产一区麻豆水好多高潮| 亚洲精品欧美精品日韩精品| 亚洲午夜福利不卡片在线| 国产精品欧美一区两区| 日本精品理论在线观看| 一区二区日韩欧美精品| 国产一区二区三区香蕉av|