Day01 2016-7-20 完成主界面和设置密码功能
主界面采用线性布局,将功能分为手机防盗、通讯卫士、软件管家和手机杀毒四类。分别对这四类进行点击事件监听。
当点击手机防盗时,检查是否设置过密码,没有设置弹出设置密码对话框。已设置则弹出输入密码对话框。自定义对话框样式,使用shape标签将对话框背景设为圆角。
密码通过MD5加密后,通过SharedPreferences存储到文件中。使用MessageDigest.getInstance("md5")拿到一个MD5转换器,将输入的字符串转成字节数组,通过MD5转换器的digest方法将字节数组转换得到结果,再将结果转为16进制。
public class MD5Utils { public static String encode(String text){ try{ MessageDigest digest = MessageDigest.getInstance("md5");//拿到一个MD5转换器 byte[] result =digest.digest(text.getBytes());//输入的字符串转成字节数组,字节数组转换得到结果 StringBuilder sb = new StringBuilder();//转成16进制 for(byte b:result){ int number=b&0xff;//高24位清零 String hex = Integer.toHexString(number); if(hex.length()==1){//不足2位在前面加0补位 sb.append("0"+hex); }else{ sb.append(hex); } } return sb.toString(); }catch(NoSuchAlgorithmException e){ e.printStackTrace(); return""; } } }
监听退出按键,2秒钟内连按两次才会退出程序,以防止误点击退出
@Override public boolean onKeyDown(int keyCode,KeyEvent event){ if(keyCode==KeyEvent.KEYCODE_BACK){//如果是按退出键 if((System.currentTimeMillis()-mExitTime)<2000){//如果第二次按退出,且与第一次按相隔两秒以内 System.exit(0);//退出程序 }else{ Toast.makeText(this,"再按一次退出程序",Toast.LENGTH_SHORT).show();//第一次按,用Toast弹出提醒,需要按两次 mExitTime=System.currentTimeMillis();//记录当前时间 } return true; } return super.onKeyDown(keyCode,event); }