我有个问题。HTML5页面可以与Android中的本地组件交互吗?
我试图实现的是在一个显示内容列表的HTML5页面上。我想创建一个通知,说明某些内容已到达。?
我猜,这样做的一个方法是使用webview并在那里显示我的html5内容,但是如何从webview获取回调,以便我可以通过通知栏通知用户一些内容已经到达,可以使用原生android代码访问?
我已经知道如何在android上创建通知以及如何创建webview,我只需要找到一种方法将html5页面中的数据发送到android组件,反之亦然。
这是可以实现的还是过于雄心勃勃?
最佳答案
是的,您可以通过javascript接口实现这一点。通过这个javascript可以调用您附加的接口中定义的函数。
http://developer.android.com/guide/webapps/webview.html
在您的Activity
中:
WebAppInterface mInterface;
public void onCreate() {
mInterface = new WebAppInterface(this);
mWebView.addJavascriptInterface(mInterface, "MyAndroidInterface")
}
现在定义一个对象,调用将转到该对象:
public class WebAppInterface {
Context mContext;
/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
mContext = c;
}
/** Show a toast from the web page */
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
现在在
Javascript
中,您可以:MyAndroidInterface.showToast("hello world");
返回(从
native
到Javascript
)可以通过Javascript injection
完成。在
Javascript
中定义函数:function helloBack(param) {
}
现在您可以拨打
mWebView.loadUrl("javascript:helloBack(hi);");