微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将JavaScript代码绑定到Android代码

我试图从javascript调用java中的方法,但是当我在模拟器中运行应用程序时,这不会发生,当假设在java中调用方法时应用程序停止.这是java代码

import android.os.Bundle;
import android.webkit.WebView;
import com.phonegap.*;

public class App extends DroidGap {
    WebView webView; 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        webView = new WebView(this); 
        webView.addJavascriptInterface(new message(), "Show");
        super.loadUrl("file:///android_asset/www/index.html");
    }

    class message {
        String msg() {
            return "Hello World!!";
        }
    }
}

这是javascript:

<script type="text/javascript">
{
    alert("Start");
    alert(Show.msg());
    alert("End");    
}
</script>

显示了第一个警报但之后什么也没有,有人可以帮忙吗?

解决方法:

你的问题是你有一半使用PhoneGap而一半没有.您正在从PhoneGap创建一个单独的WebView类.您添加“Show”的WebView类永远不会被使用.相反,作为super(DroidGap)成员的WebView类是.

你应该做两件事之一.

>使用PhoneGap的插件结构(参见示例here)
>根本不要使用PhoneGap,并且有一个类似于以下内容的类:

public class act extends Activity {
   WebView webView; 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        webView = new WebView(this); 
        webView.getSettings().setJavaScriptEnabled(true);

        // Set JS alert() hook
        webView.setWebChromeClient(new WebChromeClient() {
            public boolean onjsAlert(WebView view, String url, String message, JsResult result) 
            {
                return false;
            }
            });       

        webView.loadUrl("file:///android_asset/www/index.html");

        // Add JS libraries
        webView.addJavascriptInterface(new message(), "Show");
    }

    class message {
        public String msg() {
            return "Hello World!!";
        }
    }
}

请注意,方法msg需要是公共的

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐