使用SharedPreferences记住密码的功能
来源:互联网 发布:yield python 编辑:程序博客网 时间:2024/05/17 19:17
本案例实现的功能:强制下线和记住密码的功能。
强制下线的实现思路:用户通过用户名和密码登录主界面,点击主界面按钮,发送一条广播,通知程序强制下线。广播接收器接收广播信息,强制用户下线。
记住密码的实现思路:点击记住密码选项框,将密码信息存入到SharedPreferences中,下次登陆时直接从SharedPreferences中读取信息,显示在EditText中。
1、定义登录界面activity_login.xml,使用的TableLayout布局
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:stretchColumns="1"> <TableRow> <TextView android:id="@+id/Account" android:layout_height="wrap_content" android:text="Account:"/> <EditText android:id="@+id/account_text" android:layout_height="wrap_content" android:hint="Input your account"/> </TableRow> <TableRow> <TextView android:id="@+id/Password" android:layout_height="wrap_content" android:text="Password:" /> <EditText android:id="@+id/password_text" android:layout_height="wrap_content" android:hint="Input your password"/> </TableRow> <TableRow> <CheckBox android:id="@+id/remember_pass" android:layout_height="wrap_content"/> <TextView android:layout_height="wrap_content" android:text="Remember password"/> </TableRow> <TableRow> <Button android:id="@+id/login" android:layout_height="wrap_content" android:layout_span="2" android:text="Login"/> </TableRow></TableLayout>2、定义主界面activity_main.xml,主界面只有一个按钮是发送广播的。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/force_offline" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Send force offline broadcast"/></LinearLayout>3、定义一个活动集合类,来管理所有的活动。
public class ActivityCollector { public static List<Activity> activities=new ArrayList<Activity>(); public static void addActivity(Activity activity) { activities.add(activity); } public static void removeActivity(Activity activity) { activities.remove(activity); } public static void finishAll() { for(Activity activity:activities) { if(!activity.isFinishing()) { activity.finish(); } } }}4、定义一个BaseActivity将活动从集合类中添加或删除。
public class BaseActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 ActivityCollector.addActivity(this); } @Override protected void onDestroy() { super.onDestroy(); ActivityCollector.removeActivity(this); }}5、实现LoginActivity的类
public class LoginActivity extends BaseActivity { private SharedPreferences pref; private SharedPreferences.Editor editor; private EditText accountEdit; private EditText passwordEdit; private Button login; private CheckBox rememberPass; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); pref= PreferenceManager.getDefaultSharedPreferences(this); accountEdit=(EditText)findViewById(R.id.account_text); passwordEdit=(EditText)findViewById(R.id.password_text); rememberPass=(CheckBox)findViewById(R.id.remember_pass); login=(Button)findViewById(R.id.login); boolean isRemember=pref.getBoolean("remember_password", false); if(isRemember) { String account=pref.getString("account",""); String password=pref.getString("password",""); accountEdit.setText(account); passwordEdit.setText(password); rememberPass.setChecked(true); } login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String account=accountEdit.getText().toString(); String password=passwordEdit.getText().toString(); if(account.equals("admin")&&password.equals("123456")) {//在登录的时候判断,记住密码的选项框有没有选中,选中了则将信息存入到SharedPreference中 editor=pref.edit(); if(rememberPass.isChecked()) { editor.putBoolean("remember_password",true); editor.putString("account",account); editor.putString("password",password); }else { editor.clear();//通过调用clear方法将SharedPreferences文件中的数据全部清除掉。 } editor.commit(); Intent intent=new Intent(LoginActivity.this,MainActivity.class); startActivity(intent); finish(); }else{ Toast.makeText(LoginActivity.this, "account or password is invalid", Toast.LENGTH_SHORT).show(); } } }); }}6、实现MainActivity,发送一条广播,通知强制下线。
public class MainActivity extends BaseActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button forceOffline=(Button)findViewById(R.id.force_offline); forceOffline.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent("cn.sict.rememberpassword.FORCE_OFFLINE"); sendBroadcast(intent); } }); }}7、在广播接收器中实现强制下线的功能。
public class ForceOfflineReceiver extends BroadcastReceiver { @Override public void onReceive(final Context context, Intent intent) { AlertDialog.Builder dialogBuilder=new AlertDialog.Builder(context); dialogBuilder.setTitle("Warning"); dialogBuilder.setMessage("You are forced to be offline.Please try to login again"); dialogBuilder.setCancelable(false); dialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { ActivityCollector.finishAll();//销毁所有的活动 Intent intent = new Intent(context, LoginActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent);//重新启动LoginActivity } }); AlertDialog alertDialog=dialogBuilder.create(); alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); alertDialog.show(); }}实验结果如下所示:
0 0
- 使用SharedPreferences记住密码的功能
- 实践--使用SharedPreferences实现记住密码的功能
- SharedPreferences偏好设置的使用,类似于记住密码功能
- 使用SharedPreferences实现记住账号密码的功能
- 使用SharedPreferences实现简单的记住用户名和密码功能
- 使用SharedPreferences实现记住密码功能
- 使用 SharedPreferences记住密码
- 用户登录记住密码----SharedPreferences的使用
- SharedPreferences实现记住密码功能
- 使用 SharedPreferences 实现记住用户名和密码功能
- 使用SharedPreferences实现登录记住密码功能实现
- 实现记住密码功能(SharedPreferences的使用)与强制下线
- 实现用户名及密码记住功能(SharedPreferences的用法)
- 利用SharedPreferences实现记住密码功能
- Android中SharedPreferences的使用(登陆,记住密码)
- 用户登录记住密码(SharedPreferences的使用)
- 使用SharedPreferences记住用户名及密码
- android使用SharedPreferences实现记住账号密码
- 直方图均衡化
- 用在计时器上的“神器”------Timer
- YUV(一)-数据格式分析
- Kurento应用开发指南(以Kurento 5.0为模板) 之三:示例教程 一对多的视频呼叫
- hit2060
- 使用SharedPreferences记住密码的功能
- SAP生产机速度慢的一些解决方法
- ajax动态加载下拉框、单选框、复选框
- 希尔(Shell)排序
- 黑马程序员——java复习总结——其他类和IO流
- 累了就会(ˇˍˇ) 想~爸爸想妈妈
- Java Foreach语句使用总结
- 通道的拆分与合并
- 今天,我写下了我的第一篇博文。