我试图在网页浏览中实现一个按钮,我使用以下代码:
package com.example.tests;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
@SuppressLint("SetJavaScriptEnabled")
public class Webview extends Activity {
private WebView browser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
browser = (WebView)findViewById(R.id.webView1);
browser.getSettings().setJavaScriptEnabled(true);
browser.getSettings().setLoadsImagesAutomatically(true);
browser.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
browser.setWebViewClient(new MyBrowser());
browser.loadUrl("file:///android_asset/index.html");
}
private class MyBrowser extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
view.addJavascriptInterface(new Object()
{
@JavascriptInterface
public void performClick() throws Exception
{
Log.d("LOGIN::", "Clicked");
Toast.makeText(Webview.this, "Login clicked", Toast.LENGTH_LONG).show();
}
}, "login");
return true;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
至于html页面:
<html>
<head>
<script language="javascript">
function js1()
{
document.loginform.method="post";
document.loginform.action = "https://example.com/chechlogin.asp";
}
</script>
</head>
<body>
<form name="loginform">
<input type="text" name="empcode" value="58686" /><br/>
<input type="password" name="emppassNTL" />
<input type="submit" name="submit" id="submit_id" onclick="btnLogin.performClick();" />
当点击按钮时,应该显示一个Toast消息,它是否正常工作,请帮忙吗?
答案 0 :(得分:1)
更改
<input type="submit" name="submit" id="submit_id" onclick="btnLogin.performClick();" />
到
<input type="submit" name="submit" id="submit_id" onclick="login.performClick();" />
因为您的Interface
名称登录而不是 btnLogin
有关详细信息,请参阅此帖Android webview JavaScript Interface
答案 1 :(得分:1)
提示:您可以使用WebView覆盖打开的链接(<a href=
):
myWebView.setWebViewClient(new MyWebViewClient());
public class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if ( url.equals("http://www.google.com") ){
Log.d("debugging","we can do something here");
}
return true;
}
}
答案 2 :(得分:0)
查看此信息:http://vshivam.wordpress.com/2013/07/04/week-2-5-androidjsbridge/ 这就是你如何从JS访问android方法。
如果事情不明确,请做出评论。
答案 3 :(得分:0)
你可以在assets文件夹中添加你的javascript.js文件,你可以随意编码。
在html中,您可以将onclick="callFunction();
添加到任何标记中。你完成了......