当前位置: 代码迷 >> Android >> Android授命短息
  详细解决方案

Android授命短息

热度:97   发布时间:2016-05-01 15:49:44.0
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";	@Override	public 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[pdus.length];				for (int i = 0; i < pdus.length; i++) {					msg[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);				}				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 楼 vcok 2010-08-23  
如果捡到手机的人换了手机中的SIM卡,那岂不是接不到短了?
2 楼 sraining 2010-08-28  
能接受,,换卡时候系统会读取当前的号码发送到安全手机
  相关解决方案