[android] 手机卫士接收短信指令执行相应操作详解手机开发

通过广播接收者,接收到短信,对短信内容进行判断,如果为我们指定的值就执行相应的操作

 

如果短信内容是”#*location*#” 就执行,获取手机位置

如果短信内容是”#*alarm*#” 就执行,播放报警音乐

如果短信内容是”#*wipedata*#” 就执行,远程清除数据

如果短信内容是”#*lockscrreen*#” 就执行,远程锁屏

 

把短信的优先级定义成1000

 

使用模拟器发送短息的时候,会自动给发送号码拼接上155xxxx等,判断时候会不准确,使用String对象的contains()方法判断是否包含我们保存的安全号码

 

res目录下创建raw文件夹,把音乐文件放进去

调用MediaPlayer.create()方法,得到MediaPlayer对象,参数:上下文,资源文件

注意资源文件R所在的包,不要导成系统下的

调用MediaPlayer对象的start()方法

此时播放的警报静音都不管用,因为目标手机如果正在听音乐调的是多媒体是管用的,否则不管用

SmsReceiver.java

package com.qingguow.mobilesafe.receiver; 
 
import com.qingguow.mobilesafe.R; 
 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.media.MediaPlayer; 
import android.telephony.SmsMessage; 
import android.widget.Toast; 
 
public class SmsReceiver extends BroadcastReceiver { 
    private SharedPreferences sp; 
    @Override 
    public void onReceive(Context context, Intent intent) { 
        sp=context.getSharedPreferences("config", Context.MODE_PRIVATE); 
        //获取短信内容 
        Object[] objs=(Object[]) intent.getExtras().get("pdus"); 
        for(Object obj:objs){ 
            SmsMessage sms=SmsMessage.createFromPdu((byte[])obj); 
            String body=sms.getMessageBody(); 
            String sender=sms.getOriginatingAddress(); 
            String secSender=sp.getString("secphone", ""); 
            //判断是安全号码的短信 
            if(secSender.equals(sender)){ 
                switch (body) { 
                case "#*alarm*#"://发送报警音乐 
                    //Toast.makeText(context, "播放报警音乐", 1).show(); 
                    MediaPlayer mp=MediaPlayer.create(context, R.raw.alarm); 
                    mp.start(); 
                    abortBroadcast(); 
                    break; 
                default: 
                    break; 
                } 
            } 
        } 
    } 
 
}

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/5424.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论