我有个问题。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");

返回(从nativeJavascript)可以通过Javascript injection完成。
Javascript中定义函数:
function helloBack(param) {
}

现在您可以拨打mWebView.loadUrl("javascript:helloBack(hi);");

09-30 15:42
查看更多