簡體   English   中英

在webview中自動登錄返回帶有用戶名的空白頁

[英]auto login in webview returns blank page with the username

我正在嘗試制作一個要在Webview上加載和顯示網頁的應用程序,我希望用戶不必多次登錄即可運行該應用程序,因此我想自動填寫“用戶名”和“密碼”字段。 我嘗試了很多在google中找到的方法,但是其中一些方法不起作用,用戶名和密碼字段仍然為空,而其他方法只是使用用戶名值打開空白頁面。

這是我要自動記錄的網頁代碼的一部分:

 <form action="#" onSubmit="MAIN.doAuth(); return false;"> <div class="user_id"> <label for="user_id">User ID</label> <div class="text_frame"> <input id="user_id" type="text" value="" maxlength="20"> <span class="button_clear_text" onclick=""></span> </div> </div> <div class="password"> <label for="password">Password</label> <div class="text_frame"> <input id="password" type="password" value="" maxlength="20"> <span class="button_clear_text" onclick=""></span> </div> </div> <div class="submit"> <input id="button_login" type="submit" value="LOGIN"> </div> </form> 

這是我的mainActivity:

public class FirstScreenActivity<DrawerLayout> extends Activity {

ArrayAdapter adapter;
private DrawerLayout mDrawerLayout;
public String[] names;
public String username = "oscar";
private ListView mDrawerList;

@Override
protected void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.first_screen);
    View header = (View) getLayoutInflater().inflate(R.layout.cabecera, null);
    View footer = (View) getLayoutInflater().inflate(R.layout.footer, null);
    this.mDrawerList = (ListView) findViewById(R.id.left_drawer); // list view

    // Load an array of options names
    names = getResources().getStringArray(
            R.array.nav_options);

 // Set previous array as adapter of the list
   /* ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, names);*/
    mDrawerList.addHeaderView(header);
    mDrawerList.addFooterView(footer);
    adapter = new AdaptadorList(
            this,
            DataSource.TAREAS);
    mDrawerList.setAdapter(adapter);
    mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

    WebView webView = (WebView) this.findViewById(R.id.webview);
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webView.setWebChromeClient(new WebChromeClient());
    webView.getSettings().setDomStorageEnabled(true);
    webView.loadUrl("https://m-komtrax.komatsu.co.jp/m/klc/c/");
    //webView.loadUrl("http://www.google.com");
    webView.setWebViewClient(new WebViewClient(){
       /* @Override
        public boolean shouldOverrideUrlLoading(WebView v, String url) {
            v.loadUrl(url);
            return true;
        }*/
        @Override
        public void onPageFinished(WebView v, String url) {
            v.loadUrl("javascript:document.getElementsById('password').value = 'username';");
            //v.loadUrl("javascript: document.getElementById('user_id').innerHTML  = 'hello';");
            //v.loadUrl("javascript:document.querySelector('input[id=user_id]').value = '"+ username +"';");
            //v.loadUrl("javascript:document.forms['login'].submit()");
        }
    });

}

請幫助我,我需要在用戶名和密碼字段中填寫我之前要存儲的值。 謝謝

我遇到了一個非常類似的問題。解決方案是在onPageFinished方法添加此行代碼后,只需一行代碼即可調用super類使用super關鍵字。

super.onPageFinished(view, url);

僅此而已,希望對和平有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM