登录和记住密码关于SharedPreferences存储密码
2015-08-14 17:06
309 查看
(1.)登录和记住密码关于SharedPreferences存储密码
主Activity发送广播。
public class MainActivity extends Activity {
}
(2.)对登录界面的操作
/* 登录界面的操作和编写 /
public class LoginActivity extends BaseActivity {
}
(3.)接收广播并作出相应的处理
public class ForceOfflineReceiver extends BroadcastReceiver{
}
(4.)
public class BaseActivity extends Activity{
}
(5.) Activity管理器来管理所有的Activity的活动
public class ActivityCollector {
}
主Activity发送广播。
public class MainActivity extends Activity {
private Button forceOffLine; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); forceOffLine= (Button) findViewById(R.id.force_offline); forceOffLine.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent("com.example.broadcastbestpractice.FORCE_OFFLINE"); sendBroadcast(intent); } }); }
}
(2.)对登录界面的操作
/* 登录界面的操作和编写 /
public class LoginActivity extends BaseActivity {
private EditText accountEdit; private EditText passwordEdit; private Button login; private SharedPreferences pref; private CheckBox rememberPass; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); pref = PreferenceManager.getDefaultSharedPreferences(this); accountEdit = (EditText) findViewById(R.id.account); passwordEdit = (EditText) findViewById(R.id.password); /** 是否记住密码 */ 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 OnClickListener() { private Editor editor; @Override public void onClick(View v) { String account = accountEdit.getText().toString(); String password = passwordEdit.getText().toString(); /** 如果账号是admin且密码是123456,就默认登录成功 */ if (account.equals("admin") && password.equals("123456")) { editor = pref.edit(); /** 检查是否被选中,如果是选中的状态,则进行保存密码,并且更改Boolean的值为true */ if (rememberPass.isChecked()) { editor.putBoolean("remember_password", true); editor.putString("account", account); editor.putString("password", password); }else{ /** 如果没有选中的话,调用此方法将SharedPreferences数据全部清除掉 */ editor.clear(); } 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(); } } }); }
}
(3.)接收广播并作出相应的处理
public class ForceOfflineReceiver extends BroadcastReceiver{
@Override public void onReceive(final Context context, Intent intent) { AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context); dialogBuilder.setTitle("警告"); dialogBuilder.setMessage("您要强制下线,请重新登录"); 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); /** 重新启动LoginActivity */ context.startActivity(intent); } }); AlertDialog alertDialog = dialogBuilder.create(); /** 需要设置AlertDialog的类型,保证广播接收器可以正常的弹出 */ alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); alertDialog.show(); }
}
(4.)
public class BaseActivity extends Activity{
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityCollector.AddActivity(this); } @Override protected void onDestroy() { super.onDestroy(); ActivityCollector.removeActivity(this); }
}
(5.) Activity管理器来管理所有的Activity的活动
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(); } } }
}
相关文章推荐
- Tomcat端口被占用解决方法(不用重启)
- 两种方式登录FTP
- MySql实现简单的注册登录(易语言)
- “传奇”图象数据存储方式
- JSP脚本漏洞面面观
- ASP木马后门新思路
- 超大数据量存储常用数据库分表分库算法总结
- SQL Server误区30日谈 第18天 有关FileStream的存储,垃圾回收以及其它
- 从jsp发送动态图像
- C++实现图的邻接表存储和广度优先遍历实例分析
- phpmyadmin 3.4 空密码登录的实现方法
- WinForm中的登录实现
- C#调用sql2000存储过程方法小结
- 高效的jsp分页查询
- 详解Redis开启远程登录连接
- 使用Ajax技术通过XMLHttpRequest对象完成首页登录功能
- jsp计数器-jsp文件
- JSP入门教程(4)
- 一个用JSP做的日历
- jsp基础学习资料