这里是Android Studio中的代码.我还添加了AndroID Studio代码下方的HTML代码,使用JavaScript记住cookie中的用户名和密码.它仅适用于某些AndroID设备.我不知道为什么我想使其适用于所有androID设备.
希望这将是一种简单的方法.请帮助.
我希望用户一次输入用户名/密码,下次访问时应填写该用户名/密码.
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 To 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"); }
这里带有HTML代码,使用JavaScript记住用户名和密码.
<!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" > <div > <form ACTION="<?PHP echo $loginFormAction; ?>" name="form1" method="POST"> <div > <input type="tel" name="tel" required ID="tel" pattern="[0-9]{1}[0-9]{7}" maxlength="8" value="" placeholder="phone number"/> </div> <br> <div > <input type="password" name="spassword" required ID="spassword" maxlength="8" placeholder="" /> </div> <br> <div > <input type="checkBox" name="sremember" ID="sremember" /> <label for="sremember">Remember me</label> </div> <input Type="submit" name="Login" ID="Login" value="login"> </form> <script> //remember username and 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 and 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>
解决方法:
请检查网络视图是否存储cookie,例如像这样:
@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); toolbar = (Toolbar) findVIEwByID(R.ID.app_bar); setSupportActionbar(toolbar); getSupportActionbar().setTitle("Go To Our Facebook Page"); //not sure if you need this cookieSyncManager.createInstance(this; //it is default true, but 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 you 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");}
编辑:好的,忘记上面的行:-)
请注意,我在这里写的内容在安全感知方面不是好的做法.
我只向您展示其基本工作原理(完全未经测试).
您可以使用JavaScriptInterface在Java和JavaScript之间交换数据:
在Java中:
@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); toolbar = (Toolbar) findVIEwByID(R.ID.app_bar); setSupportActionbar(toolbar); getSupportActionbar().setTitle("Go To Our Facebook Page"); WebVIEw myWebVIEw = (WebVIEw) findVIEwByID(R.ID.webvIEw); myWebVIEw.setWebVIEwClIEnt(new WebVIEwClIEnt() { @OverrIDe public voID onPageFinished(WebVIEw vIEw, String url) { //Is the url the login-page? if (url.equals ("http://www.hksalonjob.comslogin.PHP") == true) { //load JavaScript to set the values to 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 { /** * this should be triggered when user and pwd is correct, maybe after * successful login */ public voID saveValues (String usr, String pwd) { if (usr == null || pwd == null) { return; } //save the values in SharedPrefs SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); editor.putString("usr", usr); editor.putString("pwd", pwd); editor.apply(); } }
用JavaScript:
//trigger this after successful loginfunction afterSuccessLogin(usr, pwd) { if (AndroID != undefined) { if (AndroID.saveValues != undefined) { AndroID.saveValues(usr, pwd); } } }// this will be triggered by webvIEw function fillValues(usr, pwd) { //fill input fIElds with values }
总结 以上是内存溢出为你收集整理的如何使Android Webview记住用户名和密码?全部内容,希望文章能够帮你解决如何使Android Webview记住用户名和密码?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)