WebViewJavascriptBridge for Android
Switch branches/tags
Nothing to show
Clone or download
Permalink
Failed to load latest commit information.
WebViewJavascriptBridge 解决收不到APP的callback问题 Jul 3, 2015
.gitignore 初始版本 Jan 12, 2015
README.md Update README.md Jun 18, 2015

README.md

WebViewJavascriptBridge

WebViewJavascriptBridge for Android 是 WebViewJavascriptBridge for iOS/OSX的Android 实现, 项目里的WebViewJavascriptBridge.js.txt, 及测试网页ExampleApp.html 直接来自 WebViewJavascriptBridge for iOS/OSX.

使用方法:

  1. 复制WVJBWebViewClient.java 到 Android 项目 src 下的一个子目录中, 按需修改package名称;
  2. 复制WebViewJavascriptBridge.js.txt到assets目录;
  3. 子类化 WVJBWebViewClient, 例如:

class MyWebViewClient extends WVJBWebViewClient {

	public MyWebViewClient(WebView webView) {

		//需要支持JS send 方法时
		super(webView, new WVJBWebViewClient.WVJBHandler() {
			@Override
			public void request(Object data, WVJBResponseCallback callback) {		
		  		//处理代码
			}
		});
		
  	  	/*
	  	//不需要支持JS send 方法时
  		super(webView);
  		*/  
	}

	@Override
	public void onPageFinished(WebView view, String url) {
		//处理代码
		super.onPageFinished(view, url);
	}

	@Override
	public boolean shouldOverrideUrlLoading(WebView view, String url) {
		//处理代码
		return super.shouldOverrideUrlLoading(view, url);
	}
  1. 设置WebView webView.setWebViewClient(new MyWebViewClient(webView));

  2. 用 excuteJavascript 方法执行脚本:

excuteJavascript(script); //不需要返回值, script前不要加javascript:前缀

excuteJavascript(script, callback); //需要返回值, script前不要加javascript:前缀

executeJavascript方法的内部实现机制:

a. Android 4.4及更高版本下, 使用WebView.evaluateJavascript方法执行脚本;

b. Android 4.4以下版本若需要返回值则采用addJavascriptInterface机制实现;

c. Android 4.4以下版本若不需要返回值则使用loadUrl方法执行脚本.

  1. WebViewJavascriptBridge for iOS/OSX 的下载地址: https://github.com/marcuswestin/WebViewJavascriptBridge