代码之家  ›  专栏  ›  技术社区  ›  Alin

从应用程序中填写web表单并提交

  •  5
  • Alin  · 技术社区  · 7 年前

    我有一个网页,有一个简单的形式与3个输入字段,名称,电子邮件和课程和一个提交按钮。没什么特别的。

    在开发android应用程序时,我想知道如何在我的android应用程序中填写该web表单,而不使用webview实际加载网页。

    6 回复  |  直到 7 年前
        1
  •  3
  •   Edward DiGirolamo    7 年前

    我过去用过这样的东西。但是,您必须加载网络视图(尽管您不需要显示它)然后做下面这样的事情。请记住,如果站点沿路更改id,这种方法将不起作用。

    webView.loadUrl("javascript:var 
        name=document.getElementById('nameInput').value='" yourNameValue "'");
    webView.loadUrl("javascript:document.getElementById('submit').click()");
    
        2
  •  1
  •   Saurabh Mistry    7 年前

    在生成中添加此依赖项。gradle(模块:应用程序)

    dependencies {
    implementation 'com.android.support:customtabs:27.0.2'
    }
    

    在活动中添加此方法。

    public boolean isPackageExisted(String targetPackage){
    PackageManager pm=getPackageManager();
        try {
            PackageInfo info=pm.getPackageInfo(targetPackage,PackageManager.GET_META_DATA);
        } catch (PackageManager.NameNotFoundException e) {
            return false;
        }
        return true;
    }
    

    在创建活动时添加此项

    if (isPackageExisted("com.android.chrome")){
    CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
    CustomTabsIntent customTabsIntent = builder.build();                        
    customTabsIntent.intent.setPackage("com.android.chrome");                             
    customTabsIntent.intent.setAction(Intent.ACTION_VIEW);                             
    customTabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                          
    customTabsIntent.launchUrl(getApplicationContext(), Uri.parse("Your URL"));
    }
    
        3
  •  1
  •   William    7 年前

    如果不使用网络视图,将页面加载到移动应用程序中是不可能的。或者,您可以:

    1. 使用输入在android中创建表单
    2. 设置webservice以将数据提交到

    看见 this android simple form submit tutorial 用于逐步指导

        4
  •  1
  •   Josema    7 年前

    使用凌空抽射完成请求: https://developer.android.com/training/volley/index.html 然后,可以将post与类型multipart form data;)一起使用,还可以查看表单的“action”字段,这样您就可以知道post请求必须发送到哪里,并通过多部分表单数据发送数据,如我所说。

        5
  •  1
  •   Alireza    4 年前

    这样更好

        WebView web = (WebView)findViewById(R.id.web1);
        web.getSettings().setJavaScriptEnabled(true);
        web.getSettings().setDomStorageEnabled(true);
        web.loadUrl("url_address");
        web.setWebViewClient(new WebViewClient(){
            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                web.loadUrl("javascript:document.getElementById('username').value = 'alireza'; null");
                web.loadUrl("javascript:document.getElementById('password').value = '12345678'; null");
                web.loadUrl("javascript:document.getElementById('login_button').click(); null");
            }
        });
    
        6
  •  0
  •   Vishnu    7 年前

    没有WebView,您无法加载网页,也可以用java创建html页面。 通过隐藏url地址,您可以将网页表示为应用程序页面 Disable address bar in Android webview

    或者你想从url中读取字符串意味着使用这个 Get text from web page to string