webapp套用android的webview的壳子.怎么做数据交互呢?能用ajax吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webapp套用android的webview的壳子.怎么做数据交互呢?能用ajax吗相关的知识,希望对你有一定的参考价值。
参考技术A (1) js调用android的方法:WebView wView;
wView. addjavascriptInterface (Object obj, String interfaceName);
是实例化一个对象,在html的js中调用,第二个参数是实例化对象的别名,如果要使用这个obj,则在js中使用的名字
就是interfaceName。
public class jsWebDemo extends Activity
WebView wView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
wView = (WebView)findViewById(R.id.wv1);
WebSettings wSet = wView.getSettings();
wSet.setJavaScriptEnabled(true);
ProxyBridge pBridge = new ProxyBridge();
wView.addJavascriptInterface(pBridge, "AliansBridge");
wView.loadUrl("file:///android_asset/index.html");
private class ProxyBridge
public int one ()
return 1;
来看一下index.html的内容:
<html>
<mce:script language="javascript"><!--
/* This function is invoked by the activity */
function wave()
alert("1");
document.getElementById("droid").src="android_waving.png";
alert("2");
// --></mce:script>
<body>
<div id="output">Test page.</div>
<a onClick="window.demo.clickOnAndroid()">
<div style="width:100px;
margin:0px auto;
padding:10px;
text-align:center;
border:2px solid #202020;" >
<img id="droid" src="android_normal.png" mce_src="android_normal.png"/><br>
Click me!
</div>
</a>
<input type="submit" value="change to 1" onclick="document.getElementById('output').innerHTML
=AliansBridge.one()" />
</body>
</html>
这里的AliansBridge即是调用的JAVA对象。
要注意的是,如果你只有一个方法需要被js调用只new一个对象就行:
ProxyBridge pBridge = new ProxyBridge();
wView.addJavascriptInterface(pBridge, "AliansBridge");
如果你需要调用好多个方法,就要把整个android程序所在的类本身实例化传递进去:
wView.addJavascriptInterface(this, "AliansBridge");
(2) android调用js的方法:wView.setWebChromeClient (WebChromeClient client)
要用到Handler更新UI,Handler mHandler = new Handler();
mWebView.setWebChromeClient(new MyWebChromeClient());
mWebView.addJavascriptInterface(new Object()
/**
* This is not called on the UI thread. Post a runnable to invoke
* loadUrl on the UI thread.
*/
public void clickOnAndroid()
mHandler.post(new Runnable()
public void run()
mWebView.loadUrl("javascript:wave()");
);
, "demo");
同理,在html中必须有一个名为demo的对象调用clickOnAndroid()方法。
/**
* Provides a hook for calling "alert" from javascript. Useful for
* debugging your javascript.
*/
final class MyWebChromeClient extends WebChromeClient
@Override
public boolean onJsAlert(WebView view, String url, String message,
JsResult result)
result.confirm();
return super.onJsAlert(view, url, message, result);
本回答被提问者和网友采纳
以上是关于webapp套用android的webview的壳子.怎么做数据交互呢?能用ajax吗的主要内容,如果未能解决你的问题,请参考以下文章
error inflating class android.webkit.webview怎样解决
android O Error inflating class android.webkit.WebView