一:手机防盗:

1.  绑定sim

其实就是把sim卡的串号持久化到sp

获取sim卡串号,需要增加权限<uses-permission android:name="android.permission.READ_PHONE_STATE" />

 

telmanager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);

Editor editor = sp.edit();

       editor.putBoolean("issimbind", true);

       String simserial = telmanager.getSimSerialNumber();

       editor.putString("simserial", simserial);

editor.commit();

2.  通过内容提供者来获取联系人的信息:

 package cn.itcast.mobilesafe.engine;

 

import java.util.ArrayList;

import java.util.List;

 

import cn.itcast.mobilesafe.domain.ContactInfo;

import android.content.Context;

import android.database.Cursor;

import android.net.Uri;

 

public class ContactInfoService {

private Context context;

 

public ContactInfoService(Context context) {

     this.context = context;

}

 

public List<ContactInfo> getContactinfos() {

     List<ContactInfo> contactinfos = new ArrayList<ContactInfo>();

     Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");

     Cursor cursor = context.getContentResolver().query(uri, null, null,

            null, null);

     while (cursor.moveToNext()) {

        ContactInfo info = new ContactInfo();

        String id = cursor.getString(cursor.getColumnIndex("_id"));

 

        Uri dataUri = Uri.parse("content://com.android.contacts/data");

 

        Cursor datacursor = context.getContentResolver().query(dataUri,

               null, "raw_contact_id=?", new String[] { id }, null);

        while (datacursor.moveToNext()) {

 

            if ("vnd.android.cursor.item/phone_v2".equals(datacursor

                   .getString(datacursor.getColumnIndex("mimetype")))) {

               String number = datacursor.getString(datacursor

                      .getColumnIndex("data1"));

               info.setNumber(number);

            } else if ("vnd.android.cursor.item/name".equals(datacursor

                   .getString(datacursor.getColumnIndex("mimetype")))) {

               String name = datacursor.getString(datacursor

                      .getColumnIndex("data1"));

               info.setName(name);

            }

 

        }

        datacursor.close();

        contactinfos.add(info);

        info = null;

     }

     cursor.close();

 

     return contactinfos;

 

}

 

}

3.按手机的后退键不能够后退dialog的设置:

   builder.setCancelable(false);

4.手机防盗原理:

手机更换sim卡需要重启手机,所以要监视sim卡的更换,可以注册一个手机重启的广播事件,读取手机重启的事件需要增加一个权限:<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

sp中拿到islosting,和手机的串号,然后和新的sim卡进行序列号的对比,看是否发生了改变,如果改变了,就发送信息给安全号码。

5,给安全号码发送报警短信:

String safenumber = sp.getString("safenumber", "");

msManager smsmanager = SmsManager.getDefault();

  smsmanager.sendTextMessage(safenumber, null, "sim card change", null, null);

6.上下文context这个对象里有好多重要的方法,可以得到很多系统服务

7.把一个类的构造方法私有化,别人就没有办法new这个类了,可以提供一个静态方法来返回这个类的实例

8.abortBroadCast:中断短信的广播,使系统其他程序无法拿到短信

9.播放报警音乐:

MediaPlayer palyer = MediaPlayer.create(context, R.raw.e);

              palyer.setVolume(1.0f, 1.0f);

              palyer.start();

              abortBroadcast();

1.  获取手机的位置

    public String getGPSInfo(){

       // 获取一个location管理的的服务

       locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

       //provider 采用哪个位置提供者 监听位置的改变

       Criteria criteria = new Criteria();

       criteria.setCostAllowed(true);//允许产生开销

       criteria.setAccuracy(Criteria.ACCURACY_FINE);//想获取准确的位置

       criteria.setAltitudeRequired(false);// 对海拔信息不敏感

       criteria.setPowerRequirement(Criteria.POWER_HIGH);

       String provider  =locationManager.getBestProvider(criteria, true);

       locationManager.requestLocationUpdates(provider, 60000, 100, getMyListener());

       String lastlocation = sp.getString("lastlocation", "");

       return lastlocation;

    }

11.把手机恢复出厂设置:?

12.把手机锁屏:?