Android上如何实现自动登陆功能?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android上如何实现自动登陆功能?相关的知识,希望对你有一定的参考价值。
如果我的登陆界面有自动登陆的选择框Checkbox,被用户勾选后,那么用户下次登录时,如何越过登录界面直接进入应用功能页面呢?有代码的话帮贴点代码,没有的话给我点逻辑描述也行!谢谢
参考技术A 可以用SharedPreferences存贮你的账户信息,也可以用数据库,这里你随便。思路可以是这样:写一个Welcome界面,在onCreate方法中判断,根据条件来跳转到对应的活动。比如没有设置checked,则启动登录界面LoadActivity;设置了的话,读取配置信息或是数据库中存有的用户名和密码来自动登录,验证成功后跳转到应用功能界面。 参考技术B 第一次用户输入了用户名和密码,并选中了checkbox 自动登录提示框 ,建议你用SharedPreferences将状态存起来,然后注册一个service,在service中判断如果checkbox被选中直接进入你的主界面,否则就进入登录界面 ,希望这个思路对你能起到帮助! 参考技术C 账号密码居然保存在配置文件或数据库???不安全的产品。。。Android自动登录功能的实现
登陆页面布局设计:
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/account" /> <EditText android:id="@+id/edtaccount" android:layout_width="150dp" android:layout_height="wrap_content" android:inputType="number" android:singleLine="true" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/password" /> <EditText android:id="@+id/edtpassword" android:layout_width="150dp" android:layout_height="wrap_content" android:inputType="textPassword" android:singleLine="true" /> </LinearLayout> <Button android:id="@+id/btnlogin" android:layout_width="200dp" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="@string/login" />
注销页面布局设计:
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="@string/注销页面" android:textSize="15sp" /> <Button android:id="@+id/btncancel" android:layout_width="200dp" android:layout_height="wrap_content" android:text="@string/cancel" />
LoginActivity.java:
package com.xiaoyan.autologin; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class LoginActivity extends Activity { // 定义组件 private EditText edtAccount; private EditText edtPassword; private Button btnLogin; // 用于记录帐号和密码 private String strAccount = ""; private String strPassword = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login_main); // 设置标题 setTitle("Login"); // 获取sharedpreferences对象 SharedPreferences share = getSharedPreferences("Login", Context.MODE_PRIVATE); strAccount = share.getString("Account", ""); strPassword = share.getString("Password", ""); // 判断是否是之前有登录过 if (share == null) { init(); } else { // 判断是否刚注销 if (share.getBoolean("LoginBool", false)) { // 跳转到注销页面并销毁当前activity Intent intent = new Intent(LoginActivity.this, CancelActivity.class); startActivity(intent); finish(); } else { init(); } } } private void init() { // 初始化组件 edtAccount = (EditText) findViewById(R.id.edtaccount); edtPassword = (EditText) findViewById(R.id.edtpassword); btnLogin = (Button) findViewById(R.id.btnlogin); edtAccount.setText(strAccount); edtPassword.setText(strPassword); // 监听按钮 btnLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // 判断帐号和密码是输入是否为空 if (edtAccount.getText().toString().equals("") || edtPassword.getText().toString().equals("")) { Toast.makeText(LoginActivity.this, "帐号或密码不能为空", Toast.LENGTH_SHORT).show(); } else { // 创建SharedPreferences对象用于储存帐号和密码,并将其私有化 SharedPreferences share = getSharedPreferences("Login", Context.MODE_PRIVATE); // 获取编辑器来存储数据到sharedpreferences中 Editor editor = share.edit(); editor.putString("Account", edtAccount.getText().toString()); editor.putString("Password", edtPassword.getText() .toString()); editor.putBoolean("LoginBool", true); // 将数据提交到sharedpreferences中 editor.commit(); // 跳转到注销页面并销毁当前activity Intent intent = new Intent(LoginActivity.this, CancelActivity.class); startActivity(intent); finish(); } } }); } }
CancelActivity.java:
package com.xiaoyan.autologin; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.widget.Button; public class CancelActivity extends Activity { // 定义组件 private Button btnCancel; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.cancel_activity); // 设置标题 setTitle("Cancel"); // 初始化页面 init(); } private void init() { // 初始化组件 btnCancel = (Button) findViewById(R.id.btncancel); // 监听注销按钮 btnCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub // 注销帐号并销毁当前页面 SharedPreferences share = getSharedPreferences("Login", Context.MODE_PRIVATE); share.edit().putBoolean("LoginBool", false).commit(); Intent intent = new Intent(CancelActivity.this, LoginActivity.class); startActivity(intent); finish(); } }); } }
以上是关于Android上如何实现自动登陆功能?的主要内容,如果未能解决你的问题,请参考以下文章