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 }
This is literally copied from StackOverflow:
ReplyDeletehttps://stackoverflow.com/questions/31793640/how-to-make-android-webview-remember-username-and-password