一:手机防盗:
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.把手机锁屏:?
转载于:https://blog.51cto.com/asalinux/915009