sraining 发表于 2013-1-15 02:23:26

Android指令短息

这几天自己写了个手机防盗追踪软件,过程中遇到了些问题,在网友的帮助下得以解决
 
在这里总结一下,与网友分享
 
软件中有这样一块功能:接收短信息,判断是否是指令短息,如果是则执行相应的操作(事先定义好的),
 
测试的时候发现系统也能接收指令短息并显示,并且短信铃声会响起(这不是预期的效果,
 
预期的效果是系统可以正常接收非指令短息,遇到指令短息时不接受)
 
接收和发送短息的代码我就不提了,,网上有好多,
 
解决方法:
 
在Manifest.xml中配置广播的优先级高于系统,
 
代码如下
 
<receiver android:name="SmsReceiver" android:enabled="true">    <intent-filter android:priority="100">    <action android:name="android.provider.Telephony.SMS_RECEIVED"></action></intent-filter></receiver> 
 
然后在指令短息执行完毕后终止广播,这样一来系统就接收不到指令短信啦
 
代码如下:
 
package com.mess.abo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.telephony.SmsManager;import android.telephony.SmsMessage;import android.util.Log;import android.widget.Toast;public class SmsReceiver extends BroadcastReceiver {private static final String strRes = "android.provider.Telephony.SMS_RECEIVED";@Overridepublic void onReceive(Context context, Intent intent) {Log.d("info", "Now is Listening.....");/* * 判断是否是SMS_RECEIVED事件被触发 */if (intent.getAction().equals(strRes)) {Bundle bundle = intent.getExtras();if (bundle != null) {Object[] pdus = (Object[]) bundle.get("pdus");SmsMessage[] msg = new SmsMessage;for (int i = 0; i < pdus.length; i++) {msg = SmsMessage.createFromPdu((byte[]) pdus);}for (SmsMessage currMsg : msg) {String codeStr = currMsg.getDisplayMessageBody().substring(0, 3);String code1 = currMsg.getDisplayMessageBody().substring(3,4);if (codeStr.equals("000")) {if (code1.equals("1")) {Toast toast = Toast.makeText(context,"正在启动GPS防盗追踪...", Toast.LENGTH_LONG);toast.show();abortBroadcast();} else if (code1.equals("2")) {Toast toast = Toast.makeText(context,"正在获取通讯录信息...", Toast.LENGTH_LONG);toast.show();abortBroadcast();} else if (code1.equals("3")) {Toast toast = Toast.makeText(context,"正在监听短信 ...", Toast.LENGTH_LONG);toast.show();abortBroadcast();} else {Toast toast = Toast.makeText(context,"不进行任何操作 ...", Toast.LENGTH_LONG);toast.show();abortBroadcast();}}}}}}} 
在写好这个功能之后,就有朋说这是个邪恶应用,,
 
呵呵,,对,我不反对,,
 
阿弥陀佛
 
希望得到分享的朋友不要把它用作邪恶,要注意职业道德
页: [1]
查看完整版本: Android指令短息