当前位置: 首页 > 知识库问答 >
问题:

WebView的Html按钮单击活动中的检测(java代码)

黄永怡
2023-03-14
<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>
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;
   }

}  

共有1个答案

贲宜春
2023-03-14

我是这样实现的:

public class FirstActivity extends Activity {

WebView mWebView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_first);

    mWebView = (WebView) findViewById(R.id.webView1);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setDomStorageEnabled(true);
    mWebView.addJavascriptInterface(new WebAppInterface(this), "Android");
    mWebView.loadUrl("file:///android_asset/html/File1.html");
}

public class WebAppInterface {

    Context mContext;

    /** Instantiate the interface and set the context */
    WebAppInterface(Context c) {
        mContext = c;
    }

    /** Show a toast from the web page */
    @JavascriptInterface
    public void nextScreen(String pro_cat_id) {

            startActivity(new Intent(mContext,
         MainActivity.class));
    }

并且,在html文件中:

JavaScript:file3.js

function saveId(_id)
{
    localStorage.setItem("id", _id);
    Android.nextScreen(_id);
}
<html>
    <head>
        <script type="text/javascript" src="arel/js/File3.js"></script>
    </head>
    <body>
        <button onClick="saveId('1');">1</button>
        <button onClick="saveId('2');">2</button>
    </body>
</html>
 类似资料:
  • 问题内容: 我对javascript不太熟悉,但是我认为这是实现我的目标的最佳方法。如果没有,请纠正我。 我最后有一个许可证文本2按钮。所有这些都是用HTML编写的,因为许可证中有一些链接。现在,我希望当用户单击中的“确定”按钮时,这会触发一些我可以在Java中抓取的JavaScript或侦听器以触发应用程序中的前进。(“取消”按钮的作用相反,但是如果我知道一种方法,我可以做另一种。) 这会给某人

  • 我正在为Android在Eclipse中编写一个应用程序。该应用程序不断与Web服务器中的内容进行通信。在服务器中,我有一个带有另一个按钮的html文件。我希望当我按下Android应用程序中的按钮时,html文件中的按钮被自动单击...是否可能。请建议... 我看到下面的代码(jquery): 谢啦

  • 我用Webview创建了一个应用程序,需要自动按下按钮 返回null。 任何帮助都将不胜感激!

  • 我的WPF-App的主窗口上有许多按钮。这些按钮的命令应该具有相同的实现/功能,但根据按下的按钮,函数访问的文件/路径会发生变化。如何在不使用按钮单击事件处理程序(Windows表单)的情况下检测从ViewModel单击了哪个按钮? 下面是类RelayCommand的实现: 以下是ViewModel中命令的代码:

  • 我有一个显示本地HTML文件的WebView。在HTML中,我有一个硬编码的JavaScript函数。Onclick从一个按钮开始,也在该HTML文件中,函数将字符串传递到JavaScriptInterface。从那里,我想用这两个传递的字符串在我的活动中调用一个方法。这可能吗? 我已经设置好了所有的东西,它正在工作,但是在活动中调用一个方法(从JSInterface中调用)只有在我将活动方法设置

  • 问题内容: 我正在尝试为某个应用编写一些活动测试,而我要测试的一种特定情况是,当我单击某个按钮时,活动视图将相应地更新。但是,单击按钮会导致运行时间较长的异步任务启动,并且只有在该任务完成后,视图才会更改。 我该如何测试?我目前正在尝试使用ActivityInstrumentationTestCase2类来完成此操作,但是在弄清楚如何使测试“等待”直到按钮单击任务的异步部分完成并且视图更新时遇到了

  • 问题内容: 我需要自动单击网页中的任何“添加”按钮,如下所示: “ https://groceries.asda.com/search/yoghurt ” 但是,页面中的“添加”按钮都没有名称或ID。所以我不能使用Selenium包中的命令。 谁能帮我? 问题答案: 要单击特定产品的任何特定按钮,可以编写如下方法: 现在,您可以单击传递其标题的任何按钮,如下所示:

  • 问题内容: 我最近在许多Android应用程序和游戏中都注意到了这种模式:单击“后退”按钮以“退出”该应用程序时,会出现类似“请再次单击BACK退出”的消息。 我想知道,正如我越来越经常看到的那样,这是你可以以某种方式在活动中访问的内置功能吗?我看过许多类的源代码,但似乎找不到任何东西。 当然,我可以考虑几种很容易实现相同功能的方法(最简单的方法可能是在活动中保留一个布尔值,以指示用户是否已经单击