Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Android应用程序中检测网页表单提交_Javascript_Android_Forms_Webview_Submit - Fatal编程技术网

Javascript 如何在Android应用程序中检测网页表单提交

Javascript 如何在Android应用程序中检测网页表单提交,javascript,android,forms,webview,submit,Javascript,Android,Forms,Webview,Submit,我已经为Android编写了一个应用程序,它使用webview通过复选框将信息提交到MYSQl后端。现在要退出webview,用户必须使用设备上的键继续进行下一个应用程序活动。 是否有某种方法可以检测到应用程序按下了表单提交按钮,然后使用某种东西,比如说打算进入下一个活动(关闭webview,然后关闭NextActivity.class),最好不要使用javascript? 我尝试了一种shouldOverrideUrlLoading方法,在按下submit按钮时调用一个新页面,然后调用带有(U

我已经为Android编写了一个应用程序,它使用webview通过复选框将信息提交到MYSQl后端。现在要退出webview,用户必须使用设备上的键继续进行下一个应用程序活动。 是否有某种方法可以检测到应用程序按下了表单提交按钮,然后使用某种东西,比如说打算进入下一个活动(关闭webview,然后关闭NextActivity.class),最好不要使用javascript? 我尝试了一种shouldOverrideUrlLoading方法,在按下submit按钮时调用一个新页面,然后调用带有(Uri.parse(url.getHost().equals(“页面url”){Intent…}的if语句,但没有成功。 提前谢谢! 以下是编码页面:

public class WebViewActivity extends Activity { 
private WebView webView;
int backButtonCount = 0;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);
    //webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
    Bundle extras = getIntent().getExtras();
        if(extras!=null){
            String rode=extras.getString("rode");
             }
        String ray = extras.getString("rode");

    webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl("http://mywebsite.com/SubDir/user_man.php?user=" + ray);

}


private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {

        if (Uri.parse(url).equals("http://mywebsite.com/SubDir/process_prof.php")) {
             return false;
        }

        Intent ik = new Intent(WebViewActivity.this, master_menu.class);
        startActivity(ik);
        finish();
            return true;
    }
}   

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.action_bar_two, menu);
        return true;
    }

    @Override
    public boolean    onOptionsItemSelected(MenuItem item) {
    if  (item.getItemId()==R.id.action_selected){ 
        Intent iw = new Intent(this,GetUserEmail.class);
    startActivity(iw);
    finish();
    }
    else

        if  (item.getItemId()==R.id.action_cancel){ 
            Intent iw = new Intent(this,RegisterActivity.class);
        startActivity(iw);
        finish();
        }
        return true;
    }   
    public void onBackPressed()
    {
        if(backButtonCount >= 1)
        {
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
        }
        else
        {
            Toast.makeText(this, "Press the back button again to close.", Toast.LENGTH_SHORT).show();
            backButtonCount++;
        }
    }

我认为if语句的问题在于getHost(),它只返回主机名(www.google.com),而不是整个URL。尝试删除它,我相信如果它匹配,您的if语句将返回true

成功了,下面是其他人的解决方案:

public class WebViewActivity extends Activity {

public WebView webView;
int backButtonCount = 0;
final Handler myHandler = new Handler();
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);
    Bundle extras = getIntent().getExtras();
        if(extras!=null){
            String rode=extras.getString("rode");
                     }
        String ray = extras.getString("rode");

    webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    final JavaScriptInterface myJavaScriptInterface = new JavaScriptInterface(this);

    webView.loadUrl("http://mywebsite.com/subDir/user_man.php?user=" + ray);
    webView.setWebViewClient(new WebViewClient());
    webView.addJavascriptInterface(myJavaScriptInterface, "ForwardFunction");
}


  public class JavaScriptInterface {
        Context mContext;

        JavaScriptInterface(Context c) {
            mContext = c;  }

        public void goHome(){
                Intent ik = new Intent(WebViewActivity.this, GetUserEmail.class);
                startActivity(ik);
                finish();
                Toast.makeText(WebViewActivity.this,"Your choices have been updated", Toast.LENGTH_LONG).show();
        }
  }


 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.action_bar_two, menu);
        return true; }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) 
    {
    if(item.getItemId()==R.id.action_selected)
    {   Intent iw = new Intent(this,GetUserEmail.class);
        startActivity(iw);
        finish(); }
    else
        if(item.getItemId()==R.id.action_cancel)
        { 
        Intent iw = new Intent(this,RegisterActivity.class);
        startActivity(iw);
        finish();
        }
    return true;
    }   
    public void onBackPressed()
    {
        if(backButtonCount >= 1)
        {
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
        }
        else
        {
            Toast.makeText(this, "Press the back button again to close.", Toast.LENGTH_SHORT).show();
            backButtonCount++;
        }
    }

}

谢谢克里斯,尝试了一下,但运气不佳。我刚刚编辑了我的问题并添加了完整的代码(包括你的建议)。如果你只是想让用户提交表单,那么为什么不使用HTTPClient发布帖子呢:嘿,cYrixmorten:表单包含的复选框将在服务器端更改。