小白马卫士项目总结之手机防盗

手机防盗模块

本模块主要实现的是一下功能:

1、sim卡变更报警

2、GPS追踪

3、远程销毁数据

4、远程锁屏

首先看一下手机防盗的设置步骤及流程:


当第一次点击手机防盗的时候,会弹出一个对话框,需要你给它设置密码:


然后点击确定后再次点击的时候会弹出一个对话框,让你输入新设置的密码:


然后点击确定之后,就会跳转到设置向导,进行设置:


点击下一步就行了:


如果想要远程锁屏的话,可以点击激活后可以远程锁屏这个,然后激活一下就可以了!设置完成后就进入到主界面了!

其中主要的实现代码是这样的,上面也有详细的注释,值得说明的是,密码的保存我是通过SharedPreferences来完成的,当第二次进入的

时候,它通过存放的boolean类型的状态判断一下是不是第一次设置,如果是第一次设置的话,就进行设置密码,如果不是第一次设置的话就

进行输入你设置的密码!

恩~~  以下就是本模块流程的主要代码:

package cn.cbd.mobilesafe.activity;



import cn.cbd.mobilesafe.activity.util.MD5Util;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;


public class SettingCheckPasswordActivity extends Activity implements OnClickListener {

	private EditText et_first_entry_pwd;  //第一次进入对话框里面的文本框
	private EditText et_first_entry_pwd_confirm;  //这是第二次的
	private Button bt_first_entry_ok;  //第一次进入的对话框的确定按钮
	private Button bt_first_entry_cancle;  //对话框的取消按钮
	private EditText et_normal_entry_pwd;
	private Button bt_normal_entry_ok;
	private Button bt_normal_entry_cancle;
	private SharedPreferences ps;  //共享数据用来存放是否设置的状态与密码等数据的
	private AlertDialog dialog;
	private TextView tv_lostfind_number;
	private ImageView iv_lostfind_status;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		
		super.onCreate(savedInstanceState);
		ps=getSharedPreferences("config",Context.MODE_PRIVATE);
		
		if(!isSetupPassword())//第一次进入保存密码
		{
			showFirstNormalDialog();
		}
		else  //第二次进入显示第二个对话框再次输入保存后的密码
		{
			showFirstEntryDialog();	
		}
		
		
			
		
	}
	private void showFirstNormalDialog() {  //第二次进入的时候要显示的对话框
		AlertDialog.Builder builder=new Builder(this);
		//这个view得话是用来装饰这个对话框的
		View view=View.inflate(this, R.layout.layout_normal_dialog,null); 
		
		et_normal_entry_pwd=(EditText) view.findViewById(R.id.et_normal_entry_pwd);
		bt_normal_entry_ok=(Button) view.findViewById(R.id.bt_normal_entry_ok);
		bt_normal_entry_cancle=(Button) view.findViewById(R.id.bt_normal_entry_cancle);
		bt_normal_entry_ok.setOnClickListener(this);
		bt_normal_entry_cancle.setOnClickListener(this);
		
		dialog=builder.create();
		dialog.setView(view, 0, 0, 0, 0);
		dialog.show();
		
	}
	private void showFirstEntryDialog() {  //第一次进入现实的对话框
		
		AlertDialog.Builder builder=new Builder(this);
		View view=View.inflate(this, R.layout.layout_first_dialog,null);
		
		et_first_entry_pwd=(EditText) view.findViewById(R.id.et_first_entry_pwd);
		et_first_entry_pwd_confirm=(EditText) view.findViewById(R.id.et_first_entry_pwd_confirm);
		bt_first_entry_ok=(Button) view.findViewById(R.id.bt_first_entry_ok);
		bt_first_entry_cancle=(Button) view.findViewById(R.id.bt_first_entry_cancle);
		bt_first_entry_ok.setOnClickListener(this);
		bt_first_entry_cancle.setOnClickListener(this);
		dialog=builder.create();
		
		dialog.setView(view, 0, 0, 0, 0);
		dialog.show();
		
		
		
	}
	
	public void onClick(View v) {  //监听的方法
		
		switch(v.getId())
		{
		    case R.id.bt_first_entry_ok :   //点击的第一个对话框的确定
		    	 String pwd=et_first_entry_pwd.getText().toString();
		    	 String pwd_confirm=et_first_entry_pwd_confirm.getText().toString();
		    	  if(TextUtils.isEmpty(pwd) || TextUtils.isEmpty(pwd_confirm))
		    	  {
		    		  Toast.makeText(this, "密码不能为空", Toast.LENGTH_SHORT).show();
		    		  return;
		    	  }
		    	  if(!pwd.equals(pwd_confirm))
		    	  {
		    		  Toast.makeText(this, "两次密码不一致", Toast.LENGTH_SHORT).show();
		    		  return;
		    	  }
		    	  else
		    	  {
		    		  //保存密码
		    		  Editor edit=ps.edit();   //将密码保存到sharedPrefrences里面
		    		  edit.putString("password",MD5Util.ecode(pwd));  //对密码进行md5加密
		    		  edit.commit();  //提交
		    		  dialog.dismiss();  //然后关闭第一个对话框
		    		  finish(); 
		    	  }
		    	  break;
		    	  
		    case R.id.bt_first_entry_cancle :
		    	  dialog.dismiss();
	    		  finish();
	    		  break;
	    		  
		    case R.id.bt_normal_entry_ok :	//第二个对话框的确定按钮
		    	 String entry_pwd=et_normal_entry_pwd.getText().toString();
		    	 
		    	 if(TextUtils.isEmpty(entry_pwd))
		    	 {
		    		 Toast.makeText(this, "密码不能为空", Toast.LENGTH_SHORT).show();
		    		 return;
		    	 }
		    	 String savePwd=ps.getString("password","");
		    	 if(!savePwd.equals(MD5Util.ecode(entry_pwd)))
		    	 {
		    		 Toast.makeText(this, "密码不正确", Toast.LENGTH_SHORT).show();
		    		 return;
		    	 } 
		    	 else
		    	 {
		    		 //进入主界面
		    		 //判断用户是否设置了向导,如果已设置向导,进入主界面
		    		 //这是根据sharedPrefrences存放的标志来判断的!
		    		 if(isSetupWizard())
		    		 {
			    			//判断用户是否设置了向导,如果设置了向导,进入主界面
			    			Log.i("SettingCheckPasswordActivity", "进入主界面");
			    			setContentView(R.layout.mobile_fangdao_page);
			    			tv_lostfind_number=(TextView) findViewById(R.id.tv_lostfind_number);
			    			iv_lostfind_status=(ImageView) findViewById(R.id.iv_lostfind_status);
			    			tv_lostfind_number.setText(ps.getString("safeMobleNumber", ""));
			    			boolean protecting=ps.getBoolean("protecting", false);  //获取绑定到sim卡的状态
			    			if(protecting)
			    			{	//上锁状态
			    			    iv_lostfind_status.setImageResource(R.drawable.lock);
			    			}
			    			else
			    			{	//开锁状态
			    			    iv_lostfind_status.setImageResource(R.drawable.unlock);
			    			}
		    		 }
		    		 else
		    		 {
		    			 Log.i("SettingCheckPasswordActivity", "进入设置向导界面");
		    			//如果未设置向导,进入设置向导界面
		    			 Intent intent=new Intent(this,SetupWizardOneActivity.class);
		    			 startActivity(intent);
		    			 finish();
		    			 
		    		 }
		    		 //关闭对话框
		    		 dialog.dismiss();
			    	
		    	 }	 
		    	 
		    	 break;
		  
		    case R.id.bt_normal_entry_cancle :
		    	 dialog.dismiss();
	    		 finish();
	    		 break;
		}
		
	}
	private boolean isSetupPassword() {
		String password=ps.getString("password", "");
	    return TextUtils.isEmpty(password);
		
	}
	
	public boolean onCreateOptionsMenu(Menu menu) {  //这个是点击menu的时候弹出来的菜单
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.update_set_menu, menu);
		return true;
	}
	
	public boolean onOptionsItemSelected(MenuItem item) {  //这个是点击菜单的事件
		switch(item.getItemId())
		{
		   case R.id.item_change_name :  //如果点击对话框的确定的话
			 //弹出一个对话框 修改名称
		    	AlertDialog.Builder builder = new Builder(this);
		    	builder.setTitle("修改名称");
		    	final EditText et = new EditText(this);
		    	et.setHint("请输入新的名称");
		    	builder.setView(et);
		    	//当点击确定的时候会执行这个onClick方法
		    	builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						String name = et.getText().toString().trim();
						Editor editor  = ps.edit();
						editor.putString("name", name);
						editor.commit();
						
					}
				
		    	});
		    	
		    	builder.show();
		}
		return super.onOptionsItemSelected(item);
	}
	
	
	/**
	 * 是否设置过防盗向导 true表示已设置向导,false表示未设置向导致
	 * @return
	 */
	public boolean isSetupWizard()
	{
		return ps.getBoolean("isSetupWizard", false);
		 
	}

	/**如果点击了重新设置向导TextView,则执行该方法
	 * 
	 * @param v
	 */
	public void reEntrySetup(View v)
	{
		Intent intent =new Intent(this,SetupWizardOneActivity.class);
		startActivity(intent);
		finish();
		 
	}
}
还有就是,这个上面的功能的话,需要广播与服务!这会在手机防盗功能的实现这一贴将会总结!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章