How to make Android webview remember username and password? -


here code in android studio. add html code below android studio code, using javascript remember username , password in cookies. works in android device only. don'y know why. make works android device. hope simple way it. please kindly help. want user typed in username/password 1 time, should filled out on next visit.

public class mainactivity extends appcompatactivity {      private toolbar toolbar;       @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);           toolbar = (toolbar) findviewbyid(r.id.app_bar);         setsupportactionbar(toolbar);         getsupportactionbar().settitle("go our facebook page");          webview mywebview = (webview) findviewbyid(r.id.webview);         mywebview.setwebviewclient(new webviewclient());         websettings websettings = mywebview.getsettings();         websettings.setjavascriptenabled(true);         mywebview.loadurl("http://www.hksalonjob.comslogin.php");      } 

here html code, using javascript remember username , password.

    <!doctype html>      <html>         <head>             <title>salon job hk</title>             <meta http-equiv="content-type" content="text/html; charset=utf-8" />             <meta name="description" content="" />             <meta name="keywords" content="" />             <!--[if lte ie 8]><script src="css/ie/html5shiv.js"></script><![endif]-->             <script src="js/jquery.min.js"></script>             <script src="js/jquery.scrolly.min.js"></script>             <script src="js/jquery.dropotron.min.js"></script>             <script src="js/jquery.scrollex.min.js"></script>             <script src="js/skel.min.js"></script>             <script src="js/skel-layers.min.js"></script>             <script src="js/init.js"></script>             <script src="http://code.jquery.com/jquery-1.9.1.js"></script>             <noscript>                 <link rel="stylesheet" href="css/skel.css" />                 <link rel="stylesheet" href="css/style.css" />                 <link rel="stylesheet" href="css/style-xlarge.css" />             </noscript>             <!--[if lte ie 9]><link rel="stylesheet" href="css/ie/v9.css" /><![endif]-->             <!--[if lte ie 8]><link rel="stylesheet" href="css/ie/v8.css" /><![endif]-->          </head>         <body>              <!-- header -->               <!-- main -->            <div id="main" class="wrapper style1">         <div class="container">             <form action="<?php echo $loginformaction; ?>" name="form1" method="post">                                            <div class="12u$">                                           <input type="tel" name="tel" required id="tel"  pattern="[0-9]{1}[0-9]{7}"  maxlength="8" value="" placeholder="phone number"/>                                         </div>                                         <br>                                          <div class="12u$">                                           <input type="password" name="spassword" required id="spassword"  maxlength="8" placeholder="" />                                         </div>                                          <br>                                         <div class="12u$">                                         <input type="checkbox" name="sremember" id="sremember" />                                         <label for="sremember">remember me</label>                                          </div>                             <input type="submit" class="button special fit" name="login" id="login" value="login">              </form>                 <script>             //remember username , password                         $(function() {                              if (localstorage.chkbx && localstorage.chkbx != '') {                                 $('#sremember').attr('checked', 'checked');                                 $('#tel').val(localstorage.tel);                                 $('#spassword').val(localstorage.spassword);                             } else {                                 $('#sremember').removeattr('checked');                                 $('#tel').val('');                                 $('#spassword').val('');                             }                              $('#sremember').click(function() {                                  if ($('#sremember').is(':checked')) {                                     // save username , password                                     localstorage.tel = $('#tel').val();                                     localstorage.spassword = $('#spassword').val();                                     localstorage.chkbx = $('#sremember').val();                                 } else {                                     localstorage.tel = '';                                     localstorage.spassword = '';                                     localstorage.chkbx = '';                                 }                             });                         });              </script>          </div>         </div>      </body>     </html> 

please check whether webview stores cookies, e.g. this:

@override protected void oncreate(bundle savedinstancestate) {      super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);       toolbar = (toolbar) findviewbyid(r.id.app_bar);     setsupportactionbar(toolbar);     getsupportactionbar().settitle("go our facebook page");      //not sure if need     cookiesyncmanager.createinstance(this;     //it default true, hey...      cookiemanager.getinstance().setacceptcookie(true);      webview mywebview = (webview) findviewbyid(r.id.webview);     mywebview.setwebviewclient(new webviewclient() {      @override     public void onpagefinished(webview view, string url) {          //do have cookies?         log.d("cookie", "url: " + url + ", cookies: " + cookiemanager.getinstance().getcookie(url));      }      });     websettings websettings = mywebview.getsettings();     websettings.setjavascriptenabled(true);     mywebview.loadurl("http://www.hksalonjob.comslogin.php");  } 

edit: ok, forget lines above :-)

be careful, write here no practice in security perception. show basics how work (totally untested).

you can exchange data between java , javascript javascriptinterface:

in java:

 @override protected void oncreate(bundle savedinstancestate) {      super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);       toolbar = (toolbar) findviewbyid(r.id.app_bar);     setsupportactionbar(toolbar);     getsupportactionbar().settitle("go our facebook page");       webview mywebview = (webview) findviewbyid(r.id.webview);     mywebview.setwebviewclient(new webviewclient() {      @override     public void onpagefinished(webview view, string url) {          //is url login-page?         if (url.equals ("http://www.hksalonjob.comslogin.php") == true) {               //load javascript set values input fields              sharedpreferences prefs = getpreferences(mode_private);               string usr= prefs.getstring("usr", null);              string pwd= prefs.getstring("pwd", null);              if (usr== null || pwd == null) {                  //we  have no values - leave input fields blank                  return;              }              view.loadurl("javascript:fillvalues(" + usr + "," + pwd + ");");         }      }      });      mywebview.addjavascriptinterface(new javascriptinterface(), "android");     websettings websettings = mywebview.getsettings();     websettings.setjavascriptenabled(true);     mywebview.loadurl("http://www.hksalonjob.comslogin.php");  }   private class javascriptinterface {      /**     * should triggered when user , pwd correct, maybe after     * successful login     */     public void savevalues (string usr, string pwd) {        if (usr == null || pwd == null) {            return;       }        //save values in sharedprefs       sharedpreferences.editor editor = getpreferences(mode_private).edit();       editor.putstring("usr", usr);       editor.putstring("pwd", pwd);       editor.apply();     }  } 

in javascript:

//trigger after successful login function aftersuccesslogin(usr, pwd) {      if (android != undefined) {         if (android.savevalues != undefined) {              android.savevalues(usr, pwd);           }     }        } // triggered webview  function fillvalues(usr, pwd) {      //fill input fields values        } 

Comments

  1. This is literally copied from StackOverflow:
    https://stackoverflow.com/questions/31793640/how-to-make-android-webview-remember-username-and-password

    ReplyDelete

Post a Comment

Popular posts from this blog

php - regexp cyrillic filename not matches -

c# - OpenXML hanging while writing elements -

python - Scapy Dot11ReassoReq -