android调用JS代码

移动开发 码拜 8年前 (2016-03-22) 1341次浏览
项目要用到这个功能,之前也没搞过,写了一个简单的demo没效果。
就是在android中调用js中的一个函代码如下

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webview = (WebView) findViewById(R.id.webview);
        webview.getSettings().setJavaScriptEnabled(true);
        webview.loadUrl("file:///android_asset/gg.html");
        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                webview.loadUrl("javascript:do()");
            }
        });
    }

html文件如下

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Test Demo</title>
<p>test</p>
<script language="javascript" type="html/text"> 
function do(){
alert("Test");
}
</script>
</head>
</html>
解决方案

50

还有一点WebView 原生不支持alert方法,需要改造以后才能支持

/* WebChromeClient must be set BEFORE calling loadUrl! */
webview.setWebChromeClient(new WebChromeClient() {
    @Override
    public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result)
    {
        new AlertDialog.Builder(myApp)
            .setTitle("javaScript dialog")
            .setMessage(message)
            .setPositiveButton(android.R.string.ok,
                    new AlertDialog.OnClickListener()
                    {
                        public void onClick(DialogInterface dialog, int which)
                        {
                            result.confirm();
                        }
                    })
            .setCancelable(false)
            .create()
            .show();
        return true;
    };
});
webview.loadUrl("file:///android_asset/gg.html");

大致就是这样,到百度再搜下webview alert 有好多解决方案


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明android调用JS代码
喜欢 (0)
[1034331897@qq.com]
分享 (0)