android直接执行html代码吗,Android 嵌入 html页面,页面的javascript代码不能执行解决方案...

Android 嵌入 html页面,页面的javascript代码不能执行

我按网上的方法,在Android 嵌入了一个 html页面,html 里面的button可以调用 android 的方法,android里面的button也可以调用 html 里面的 javascript函数, 问题是: html里面的js函数却不能正常调用,朋友们帮我看下问题在哪儿,本人新手。

Activity:

Java codemWebView = (WebView) findViewById(R.id.webview);

WebSettings mWebSettings = mWebView.getSettings();

//加上这句话才能使用javascript方法

mWebSettings.setJavaScriptEnabled(true);

//增加接口方法,让html页面调用

mWebView.addJavascriptInterface(new Object() {

//这里可以正常调用

public void startBaidu() {

Uri uri = Uri.parse("http://www.baidu.com");

Intent it = new Intent(Intent.ACTION_VIEW,uri);

startActivity(it);

}

}, "demo");

mWebView.loadUrl("file:///android_asset/login.html");

//android 调用 html 的代码 //这里也可以正常调用

mButton = (Button) findViewById(R.id.button);

//给button添加事件响应,执行JavaScript的fillContent()方法

mButton.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v) {

mWebView.loadUrl("javascript:fillContent()");

}

});

login.html:

HTML code

login

function login(){

alert("登陆成功");

}

html startBaidu

确定

其他都正常,就是 上面的 “确定” 点击无效,无论把login()写在哪儿都不行,直接写成

确定 也没有反应

另外还有个小疑问,如果页面都能用 html 嵌入实现,那还要android的框架做什么。

------解决方案--------------------

Html的方式太慢了,交互性太差

------解决方案--------------------

要对webView设置一下,webViewSetting里名字好像叫enableScripts方法

------解决方案--------------------

//webView.setWebChromeClient(new WebChromeClient()

//{

//

//@Override

//public boolean onJsAlert(WebView view, String url, String message,

//JsResult result)

//{

//System.out.println("url:" + url);

//return false;

//}

//

//});

------解决方案--------------------

哦onJsAlert要返回true就可以了。还要类似的 onJsPrompt看看文档就行 都差不多。还有诸如webClient类也可以控制浏览器的许多行为。

------解决方案--------------------

Java code@Override

public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {

// return super.onJsAlert(view, url, message, result);

Builder builder = new Builder(mContext);

builder.setTitle(mContext.getText(R.string.dialog_tip_title));

builder.setMessage(message);

builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

result.confirm();

}

});

builder.setCancelable(false);

builder.create();

builder.show();

return true;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值