这几天自己写了个手机防盗追踪软件,过程中遇到了些问题,在网友的帮助下得以解决
在这里总结一下,与网友分享
软件中有这样一块功能:接收短信息,判断是否是指令短息,如果是则执行相应的操作(事先定义好的),
测试的时候发现系统也能接收指令短息并显示,并且短信铃声会响起(这不是预期的效果,
预期的效果是系统可以正常接收非指令短息,遇到指令短息时不接受)
接收和发送短息的代码我就不提了,,网上有好多,
解决方法:
在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();
}
}
}
}
}
}
}
在写好这个功能之后,就有朋说这是个邪恶应用,,
呵呵,,对,我不反对,,
阿弥陀佛
希望得到分享的朋友不要把它用作邪恶,要注意职业道德
分享到:
相关推荐
Android项目实战--手机卫士10--GPS定位与发送短信指令
在Android系统中,AT(Attention)命令主要用于与硬件模块,如调制解调器或SIM卡进行通信。这些命令遵循Hayes命令集,是通信协议的基础,尤其在GSM、UMTS和LTE网络中广泛使用。AT命令允许设备进行数据传输、网络注册...
《Android远程短信技术详解》 在移动设备领域,Android操作系统以其开放性和强大的功能深受开发者和用户的喜爱。在众多的应用场景中,远程短信功能是其中一项实用且独特的技术,它允许用户通过网络对Android设备...
在Android平台上,开发一款能通过短信进行控制的浮动窗口(Floating Window)小应用是一个有趣且实用的技术实践。这个应用允许用户通过发送特定格式的短信来操控手机上的浮动窗口,例如显示、隐藏或改变窗口内容。...
一旦接收到服务器的指令,客户端就会执行相应的操作,如向服务器发送查询结果或者根据指令修改短信内容。这种设计极大地简化了短信的批量处理,例如,用户可以一次性删除特定号码的所有短信,避免了在手机上逐条操作...
Android 短信和广播机制是本论文中用于远程指令控制和定位丢失手机的关键技术。通过Android 短信和广播机制,可以实现远程指令控制和定位丢失手机,从而增加找到手机的可能性。 知识点3: 百度地图 API 和定位技术 ...
在Android平台上,实现手机卫士接收短信指令执行相应操作的核心技术是广播接收者(BroadcastReceiver)。广播接收者是Android四大组件之一,它可以在系统中监听特定的广播事件,如接收到短信,然后根据预设的逻辑...
本文介绍了一种基于Android移动终端的短信监控系统的设计与实现。该系统旨在通过短信方式对远程Android设备进行监控,从而获取被监控设备的相关信息。系统的核心功能是接收监控手机发送的指令短信,经过处理后回复所...
在Android平台上,远程控制过程可以概括为发送特定格式的控制指令短信到目标设备,然后由目标设备上的远程控制应用读取并执行这些指令。 控制指令短信格式是指控制短信的结构和编码方式,这种格式必须被远程控制...
【Android短信源码解析】 Android系统的短信管理模块是其核心组件之一,负责处理接收、发送、存储和管理用户的短信。这个源码包包含了该模块的关键组成部分,为开发者提供了深入理解Android短信服务工作原理的机会...
android APP连接后台,接收TCP\IP指令,执行收发短信操作,读取短信后回复后台执行结果,读写文件夹记录APP执行LOG。注:收发短信、读写文件夹需要手机赋予权限,注意杀毒软件提示,此代码为安全代码,请放心使用
通过短信指令开启远程手机服务,可以将手机接收到的短信或者手机接到的电话信息发送到指定手机号码。适用于2.2以上的android手机。
创建一个BroadcastReceiver监听短信接收事件,解析短信内容并根据指令执行相应操作。 3.2.4. 实现地图追踪和远程指令 通过集成百度地图API,实现地图显示和定位功能。当接收到追踪指令时,更新手机位置并在地图上...
在Android系统中,AT命令(AT Commands)是一种用于控制调制解调器(Modem)的标准命令集,它被广泛应用于移动通信领域,如拨打电话、发送短信等。本文将详细介绍如何在Android系统中添加自定义的AT命令,并实现其功能...
设计的基本原理是利用Android的短信和广播机制接收用户的指令,然后执行相应的操作。在底层平台上,开发者需要申请密钥以合法使用百度地图服务,并导入相关的.jar和.so文件进行开发。具体步骤包括申请API密钥、将库...
在手机端,部分设备允许通过ADB(Android Debug Bridge)发送AT指令。 五、AT指令的注意事项 1. 指令的执行顺序可能影响结果,应按照正确流程发送。 2. 不同厂商和型号的手机可能对AT指令的支持程度不同,需查阅...
### Android AT 命令详解 #### 一、概述 Android系统中,AT(Attention)命令主要用于与调制解调器进行通信,控制其工作状态或获取相关信息。这些命令广泛应用于移动通信领域,如手机、数据卡等设备上。本文将详细...