的WebView的HTML中按一下按钮检测活动(JAVA的code) [英] Webview's Html button click detection in Activity(java code)
问题描述
我是想检测的WebView的HTML按钮,点击进入java的code(活性)。
我提到的另一个SO
<一href="http://stackoverflow.com/questions/4065312/detect-click-on-html-button-through-javascript-in-android-webview/7380446#7380446">Detect通过JavaScript在Android中的WebView点击HTML按钮
I was trying to detect the html button click of webview into java code(In activity) .
I referred another SO
Detect click on HTML button through javascript in Android WebView
而不是working.My code:
but is not working.My code:
index.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="login.performClick();" /> </form> </body> </html>
MainActivity.java
package com.example.webview;
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 MainActivity extends Activity {
private EditText field;
private WebView browser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
field = (EditText)findViewById(R.id.urlField);
browser = (WebView)findViewById(R.id.webView1);
browser.getSettings().setJavaScriptEnabled(true);
browser.setWebViewClient(new MyBrowser());
browser.loadUrl("file:///android_asset/index.html");
}
@SuppressLint("JavascriptInterface")
public void open(View view){
String url = field.getText().toString();
browser.getSettings().setLoadsImagesAutomatically(true);
browser.getSettings().setJavaScriptEnabled(true);
browser.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
browser.loadUrl(url);
browser.addJavascriptInterface(new Object()
{
@JavascriptInterface
public void performClick()
{
Log.d("LOGIN::", "Clicked");
Toast.makeText(MainActivity.this, "Login clicked", Toast.LENGTH_LONG).show();
}
}, "login");
}
private class MyBrowser extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
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;
}
}
但是performClick()方法是不被调用。
请更正错误。
But the performClick() method is not being called.
Please correct the error.
推荐答案
哎呀!
performClick()方法是在错误的地方。
MainActivity.java应该是这样的:
Ooops!!!
performClick() method was at wrong place.
MainActivity.java should be something like this :
package com.example.webview;
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 MainActivity 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(MainActivity.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;
}
}
这篇关于的WebView的HTML中按一下按钮检测活动(JAVA的code)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!