手机卫士知识点之------手机防盗功能1

来源:互联网 发布:图片批量下载软件 编辑:程序博客网 时间:2024/05/01 01:59
package cn.itcast.mobilesafe.ui;import cn.itcast.mobilesafe.R;import cn.itcast.mobilesafe.adapter.MainUIAdapter;import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.content.Context;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener;import android.content.Intent;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView.OnItemLongClickListener;import android.widget.EditText;import android.widget.GridView;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity implements OnItemClickListener {private static final String TAG = "MainActivity";private GridView gv_main;private MainUIAdapter adapter;// 用来持久化一些配置信息private SharedPreferences sp;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.mainscreen);sp = this.getSharedPreferences("config", Context.MODE_PRIVATE);gv_main = (GridView) this.findViewById(R.id.gv_main);//得到MainUIAdapter的adapteradapter = new MainUIAdapter(this);//设置adapter.gv_main.setAdapter(adapter);//设置每一项的点击事件.gv_main.setOnItemClickListener(this);gv_main.setOnItemLongClickListener(new OnItemLongClickListener() {public boolean onItemLongClick(AdapterView<?> parent, final View view,int position, long id) {if (position == 0) {//得到AlertDialog.BuilderAlertDialog.Builder buider = new Builder(MainActivity.this);buider.setTitle("设置");buider.setMessage("请输入要更改的名称");final EditText et = new EditText(MainActivity.this);et.setHint("请输入文本");buider.setView(et);//buider.setPositiveButton("确定", new OnClickListener() {public void onClick(DialogInterface dialog, int which) {//得到输入的迷惑名字String name = et.getText().toString().trim();if ("".equals(name)) {Toast.makeText(getApplicationContext(),"内容不能为空", 0).show();return;} else {Editor editor = sp.edit();editor.putString("lost_name", name);// 完成数据的提交editor.commit();TextView tv  = (TextView) view.findViewById(R.id.tv_main_name);//把名字更改,tv.setText(name);}}});buider.setNegativeButton("取消", new OnClickListener() {public void onClick(DialogInterface dialog, int which) {}});buider.create().show();}return false;}});}/** * 当gridview的条目被点击的时候 对应的回调 parent : girdview  * view : 当前被点击的条目 Linearlayout * position : 点击条目对应的位置 *  id : 代表的行号 */public void onItemClick(AdapterView<?> parent, View view, int position,long id) {Log.i(TAG, "点击的位置" + position);switch (position) {case 0: // 手机防盗Log.i(TAG, "进入手机防盗");//点击事件 ,进入LostProtectedActivity.Intent lostIntent = new Intent(MainActivity.this, LostProtectedActivity.class);startActivity(lostIntent);break;case 1: // 通讯卫士Log.i(TAG, "进入通讯防盗");Intent callsmsIntent = new Intent(MainActivity.this, CallSmsActivity.class);startActivity(callsmsIntent);break;case 2: // 程序管理Intent appmanagerIntent = new Intent(MainActivity.this, AppManagerActivity.class);startActivity(appmanagerIntent);break;case 7: // 高级工具Log.i(TAG, "进入高级工具");Intent atoolsIntent = new Intent(MainActivity.this, AtoolsActivity.class);startActivity(atoolsIntent);break;}}}
<pre class="java" name="code">package cn.itcast.mobilesafe.ui;import cn.itcast.mobilesafe.R;import cn.itcast.mobilesafe.util.MD5Encoder;import android.app.Activity;import android.app.Dialog;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;import android.widget.CompoundButton.OnCheckedChangeListener;public class LostProtectedActivity extends Activity implements OnClickListener {private static final String TAG = "LostProtectedActivity";private SharedPreferences sp;private Dialog dialog;private EditText et_pwd;private EditText et_pwd_confirm;private TextView tv_lost_protected_number;private TextView tv_reentry_setup_guide;private CheckBox cb_isprotecting;//这里用到了自定义对话框dialog.@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//得到sp.初始化.sp = getSharedPreferences("config", Context.MODE_PRIVATE);// 在进入后就立即进行判断,判断用户是否已经设置了密码 //如果设置了密码,也就是sp里面有值.就显示正常登陆的对话框if(isPWDSteup()){Log.i(TAG,"设置了密码,正常登陆的对话框");showNormalEntryDialog();}else{//如果没有设置密码,就显示登陆注册的对话框.Log.i(TAG,"没有设置密码,显示第一次对话框");showFirstEntryDialog();}}/** * 正常登陆的对话框 */private void showNormalEntryDialog() {dialog = new Dialog(this, R.style.MyDialog);//点后退键不能取消.dialog.setCancelable(false);//dialog.setContentView(R.layout.first_entry_dialog);//inflate方法二.内部实现一样.View view = View.inflate(this, R.layout.normal_entry_dialog, null);et_pwd = (EditText) view.findViewById(R.id.et_normal_entry_pwd);Button bt_normal_ok = (Button) view.findViewById(R.id.bt_normal_dialog_ok);Button bt_normal_cancle =  (Button) view.findViewById(R.id.bt_normal_dialog_cancle);bt_normal_ok.setOnClickListener(this);bt_normal_cancle.setOnClickListener(this);dialog.setContentView(view);dialog.show();}/** * 第一次进入程序时候的对话框 * android.jar  sdk\platforms\android-10.所有的class和资源文件.xml * 反编译android.jar.  apktool可以反编译jar和class文件.所有的样式和主题都在value下. *///自定义对话框.更改系统默认对话框的样式.//  <style name="MyDialog" parent="@android:style/Theme.Dialog">引用父类//     更改父类的背景 <item name="android:windowBackground">@drawable/title_background</item>//     添加的item <item name="android:windowNoTitle">true</item>//  </style>//android:layout_marginLeft="5dip" 控件与控件之间//padding_top   ... 控件里面的东西 距离控件边框的距离//layout_margaintop ... 控件与控件之间的距离//图片可以使选择器private void showFirstEntryDialog() {//R.style.MyDialog.dialog = new Dialog(this, R.style.MyDialog);dialog.setCancelable(false);//这种办法可以,但是我们没法用界面里面的控件.//dialog.setContentView(R.layout.first_entry_dialog);View view = View.inflate(this, R.layout.first_entry_dialog, null);et_pwd = (EditText) view.findViewById(R.id.et_first_entry_pwd);et_pwd_confirm = (EditText) view.findViewById(R.id.et_first_entry_pwd_confirm);Button bt_ok = (Button) view.findViewById(R.id.bt_first_dialog_ok);Button bt_cancle =  (Button) view.findViewById(R.id.bt_first_dialog_cancle);bt_ok.setOnClickListener(this);bt_cancle.setOnClickListener(this);dialog.setContentView(view);dialog.show();}/** * 检查sharedpreference里面是否有密码的设置 * @return */private boolean isPWDSteup(){//如果里面有数据,发挥为真,else返回为假.   String password =sp.getString("password",null);   if(password==null){   return false;   }else{   if("".equals(password)){   return false;   }else{   return true;   }   }}public void onClick(View v) {switch (v.getId()) {case R.id.bt_first_dialog_cancle:dialog.dismiss();finish();break;//得到pwd.case R.id.bt_first_dialog_ok:String pwd = et_pwd.getText().toString().trim();String pwd_confirm = et_pwd_confirm.getText().toString().trim();if("".equals(pwd)||"".equals(pwd_confirm)){Toast.makeText(getApplicationContext(), "密码不能为空", 0).show();return;}else{if(pwd.equals(pwd_confirm)){//得到editorEditor editor = sp.edit();//写入加密后的pwd.editor.putString("password", MD5Encoder.encode(pwd));editor.commit();}else{Toast.makeText(getApplicationContext(), "两次密码不同", 0).show();return;}}dialog.dismiss();break;case R.id.bt_normal_dialog_cancle:dialog.dismiss();finish();break;//普通登陆的时候.case R.id.bt_normal_dialog_ok:String password = et_pwd.getText().toString().trim();if("".equals(password)){Toast.makeText(getApplicationContext(), "请输入密码", 0).show();return;}else{//realpwd为得到sp里面的密码.  //MD5Encoder.encode(password)为把新输入进的密码.String realpwd = sp.getString("password", "");if (realpwd.equals(MD5Encoder.encode(password))){if(isSteup()){ // true //在正常登陆的时候,也就是输入密码正确的时候.Log.i(TAG,"加载手机防盗主界面");//md5加密,是不可逆的.setContentView(R.layout.lost_protected);tv_lost_protected_number = (TextView) this.findViewById(R.id.tv_lost_protected_number);tv_reentry_setup_guide = (TextView )this.findViewById(R.id.tv_reentry_setup_guide);cb_isprotecting = (CheckBox )this.findViewById(R.id.cb_isprotecting);// 初始化这些控件 String number = sp.getString("safenumber", "");tv_lost_protected_number.setText("安全手机号码为:"+number);//重新进入设置向导的点击事件tv_reentry_setup_guide.setOnClickListener(this);// 初始化checkbox的状态boolean isprotecting = sp.getBoolean("isprotecting", false);if(isprotecting){cb_isprotecting.setText("手机防盗保护中");cb_isprotecting.setChecked(true);}cb_isprotecting.setOnCheckedChangeListener(new OnCheckedChangeListener() {public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {if(isChecked){cb_isprotecting.setText("手机防盗保护中");Editor editor = sp.edit();editor.putBoolean("isprotecting", true);editor.commit();}else {cb_isprotecting.setText("没有开启防盗保护");Editor editor = sp.edit();editor.putBoolean("isprotecting", false);editor.commit();}}});}else{Log.i(TAG,"激活设置向导界面");finish();//激活设置向导界面.Intent intent = new Intent(LostProtectedActivity.this,SetupGudie1Activity.class);startActivity(intent);}}else{Toast.makeText(getApplicationContext(), "密码错误", 0).show();return;}}dialog.dismiss();break;case R.id.tv_reentry_setup_guide:finish();Intent intent = new Intent(LostProtectedActivity.this,SetupGudie1Activity.class);startActivity(intent);}}/** * 判断用户是否进行过设置向导 * @return *///判断是否设置过设置向导,或者判断是否保存过密码,都是这种类型的boolean.private boolean isSteup(){return  sp.getBoolean("issteupalready", false);}}


0 0
原创粉丝点击