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();
						}
					}
				}
			}
		}

	}
}

 

在写好这个功能之后,就有朋说这是个邪恶应用,,

 

呵呵,,对,我不反对,,

 

阿弥陀佛

 

希望得到分享的朋友不要把它用作邪恶,要注意职业道德

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值