AndroidNote005.手机防盗软件
来源:互联网 发布:学做淘宝视频教程全集 编辑:程序博客网 时间:2024/05/19 02:44
最近看了十个手机防盗软件的开发视频http://www.verycd.com/topics/2847310/
4、广播的使用
项目还带了doc总结知识点,下面结合这个项目代码说一下这些知识点的应用
1、SharedPreferences
在android平台下用于保存数据有三种方式,1、SQLite 2、SharedPreferences 3、File
SharedPreferences是将数据保存在一个xml文件中,并且是以Map的形式保存,一个Key对应一个Value 但获取某一个Key的时候,都会有一个默认值,这个默认值是在xml不存在这个key值的时候使用
1) 获得SharedPreferences :
获得SharedPreferences是通过上下文(Context)中的getSharedPreferences方法获得。
SharedPreferences sp =this.getSharedPreferences("data", MODE_WORLD_READABLE);
第一个参数是指定xml文件的名字,当不存在的时候就会创建它。第二个参数是获得这个SharedPreferences的模式,一共有四种模式:MODE_APPEND 、MODE_PRIVATE、 MODE_WORLD_READABLE 、MODE_WORLD_WRITEABLE
2)从SharedPreferences中取值
通过sp.getXXX的方式可以获得对应key的值,在getXXX的时候,需要指定一个默认的值,当key值不存在的时候使用
boolean isStart = sp.getBoolean("start", false);
3)往
ShaSharedPreferences中设值
需要用到Editor
Editor editor = sp.edit();
获得了Editor之后,才能对SharedPreferences进行写
editor.putXXX(“key”,value)
最后需要注意的一点是别忘了commit,不提交是不会写入的。
String subScriberId =tm.getSubscriberId();Editor editor = sp.edit();editor.putString("safenumber", safeNumber);editor.putBoolean("start", true);editor.putString("subscriberid", subScriberId);editor.commit();
4)Xml文件存放的位置位于data/data/包名/shared_prefs/xxx.xml
创建AlertDialog需要用到AlertDialog.Builder这个对象,对这个Builder做相应的设置,可以使AlertDialog有不同的展现
AlertDialog.Builderbuilder = new AlertDialog.Builder(this)
builder.setTitle(“”);
1) 创建普通的AlertDialog(在bmi项目中用过)
builder.setNegativeButton("xxx", newDialogInterface.OnClickListener() {
public voidonClick(DialogInterface dialog,int which)
}
});
一共有三种Button:NegativeButton,PositiveButton,NeutralButton
这三种Button默认的实现了点击之后消失AlertDialog
2) 创建自定义布局的AlertDialog
创建自定义布局的AlertDialog,需要一个布局文件,我们所需要做的就是将这个布局文件变成一个View对象,再将这个View对象设置到Builder里面去
将布局文件变成一个View对象,需要用到LayoutInflater这个对象中的inflate方法
LayoutInflater inflater = LayoutInflater.from(this);
View view =inflater.inflate(R.layout.showpassworddialog,null);
之后再builder.setView(view)就可以将自定义的布局文件放到Dialog里面去了
在这个自定义的布局文件中,我们也是可以取到里面定义的控件,通过view.findViewById() 就可以找到自定义布局文件中的相应控件,之后就可以设置或者做事件的监听
AlertDialog dialog = builder.create();
dialog.show();
在下面这个自定义的Dialog里面 ,定义了两个按钮,并且绑定的了监听器
private void showSetPasswordDialog(){ AlertDialog.Builder builder = new AlertDialog.Builder(this); LayoutInflater inflater = LayoutInflater.from(this); View view = inflater.inflate(R.layout.showpassworddialog, null); final EditText et_uername = (EditText) view.findViewById(R.id.username); final EditText et_password = (EditText) view.findViewById(R.id.password); Button btn_ok = (Button) view.findViewById(R.id.ok); Button btn_cancel = (Button) view.findViewById(R.id.cancel); btn_ok.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {String username = et_uername.getText().toString();String password = et_password.getText().toString();if(username.trim().equals("")||password.trim().equals("")){Toast.makeText(ActivityMain.this, "用户名和密码不能为空", Toast.LENGTH_LONG).show(); return;}Editor editor = sp.edit();editor.putString("username", username);editor.putString("password", password);editor.putBoolean("first", false);editor.commit();setPasswordDialog.dismiss();init();}}); btn_cancel.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if(isFirst){finish();}else{setPasswordDialog.dismiss();}}}); builder.setTitle("设置密码"); builder.setView(view); setPasswordDialog = builder.create(); setPasswordDialog.show(); }
3、TelephonyManager
获取SIM卡信息。在SIM卡中并没有保存用户的手机,区分每一张SIM是通过IMSI码。在运营商的数据库中存在手机号码和IMSI码的映射,所以手机是通过发送IMSI码到运营商的一端,获得自己的手机号码。
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);String subscriberId = tm.getSubscriberId();4、广播的使用
在android系统中,广播运用的很广泛。许多系统的事件都喜欢把它封装成广播。比如手机的电量改变,手机开机完毕,手机接收到短信等等。那么广播到底是什么呢?广播通俗的理解应该是android系统在整个手机内部发送的一个消息。比如手机开机完毕,当手机开机完成之后,就会在整个手机的内部发送一个“启动完毕”的消息。如果有一个广播接收着,它感兴趣的消息是“启动完毕”,这时候,这个广播接收者就会有所操作,比如启动某个程序,这样就可以实现开机启动程序的功能了。
系统中提供了许许多多的广播,也可以用户自定义广播。
广播接收者,对感兴趣的消息进行捕捉,一旦有这个消息出现,就进行相应的操作。
广播接收者比较重要的地方分为两点,1、广播接收者的注册 2、<intent-filter>
1、 广播接收者的注册
a) 代码中注册 临时有效
i. 注册
ii. 注销
b) Manifest文件中注册 永久有效,直到这个程序被卸载
2、 <intent-filter>
a) 指定这个广播接收者所感兴趣的广播,通过<action>标签指定
开机完毕时发送的广播:
<receiver android:name=".BootCompleteReceiver" > <intent-filter > <action android:name="android.intent.action.BOOT_COMPLETE" > </action> </intent-filter> </receiver>
接收短信时发送的广播
<receiver android:name=".SMSRecerverBroadcastReceiver" > <intent-filter > <action android:name="android.provider.Telephony.SMS_RECEIVED" > </action> </intent-filter> </receiver>
在接收某些广播的时候需要权限,例如接收短信的广播就需要
<uses-permission android:name="android.permission.RECEIVE_SMS" > </uses-permission> <uses-permission android:name="android.permission.SEND_SMS" > </uses-permission>
5、 SmsManager
1、发送短信
SmsManager smsManager =SmsManager.getDefault();
// 按照一条短信,最大容量拆分成多条短信
List<String> divideContents =smsManager.divideMessage("手机IMSI码为" +safedSubscriberid + " 已被更换SIM卡,更换的SIM卡IMSI码为:" + subscriberid);
for (String text : divideContents) {
smsManager.sendTextMessage(savedNumber,null, text, null, null);
}
-- destinationAddress:目标电话号码
-- scAddress:短信中心号码,测试可以不填
-- text: 短信内容
-- sentIntent:发送 -->中国移动 --> 中国移动发送失败--> 返回发送成功或失败信号 --> 后续处理 即,这个意图包装了短信发送状态的信息
-- deliveryIntent: 发送 -->中国移动 --> 中国移动发送成功--> 返回对方是否收到这个信息 --> 后续处理 即:这个意图包装了短信是否被对方收到的状态信息(供应商已经发送成功,但是对方没有收到)。
声明短信发送权限
* AndroidManifest.xml
<uses-permissionandroid:name="android.permission.SEND_SMS"/>
1、 读取短信内容
接收短信时发送的广播
<receiver android:name=".ReceiveSMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
在接收某些广播的时候需要权限,例如接收短信的广播就需要
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
当短信到来的时候,系统会将短信的内容封装成pdu的格式,然后放到intent里面。所以要获得短信的内容,就通过intent,将puds拿出来就可以了,它返回的是Object数组
Object[] messages = (Object[]) intent.getSerializableExtra("pdus");
创建一个二维字节数组
byte[][] pduObjs =new byte[messages.length][];
for (int i = 0; i <messages.length; i++) {
pduObjs[i]= (byte[]) messages[i];
}
byte[][] pdus = new byte[pduObjs.length][];
int pduCount = pdus.length;
SmsMessage[]msgs = new SmsMessage[pduCount];
for (int i = 0; i <pduCount; i++){
pdus[i]= pduObjs[i];
msgs[i]= SmsMessage.createFromPdu(pdus[i]);
}
return msgs;
}
一条短信就是一个SmsMessage ,这个SmsMessage可以通过一个byte[]来创建
- AndroidNote005.手机防盗软件
- 笔记本手机防盗软件
- 手机防盗软件
- Android手机防盗软件
- 手机防盗软件实现(源码)
- 手机防盗软件的实现
- 手机防盗软件的实现
- 分享一个Symbian手机防盗软件源码
- 手机防盗软件的实现日志
- 手机防盗
- 本人写的手机狗(防盗软件)欢迎下载
- 360防盗软件可精准定位手机位置
- 7、手机防盗--隐藏手机防盗标题
- 手机防盗的思路
- 手机防盗方略
- 手机防盗1
- 手机防盗2
- 防盗软件基础知识
- asp.net页面编码问题
- 揭秘淘宝286亿海量图片存储与处理架构
- 在dede:arclist、dede:list等标签中调用附加字段
- Ubuntu10.10下Android开发环境的搭建
- 引用之类对象的使用
- AndroidNote005.手机防盗软件
- struts2实现文件上传
- 未来三年的移动互联网创业----创新工场创始合伙人汪华 在移动开发者大会上的演讲
- shell命令一行一行读取文件数据
- Hadoop简介
- 查询mysql事务隔离级别
- 立志成为IT精英
- oracle数据库创建过程
- ElGamal加密算法基础到实现详解