专栏首页陶士涵的菜地[android] 手机卫士接收短信指令执行相应操作

[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;
                }
            }
        }
    }

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [android] 练习viewpagerindicator的使用(二)

    陶士涵
  • [android] 多媒体播放api简介

    界面布局,水平方向四个按钮平均分布,使用权重,定义android:layout_width=”0dp”,定义layout_weight=”1”这个属性全都一致就...

    陶士涵
  • [android] 安卓自定义样式和主题

    简单练习自定义样式和主题,样式是加在View上,主题是加在Application或者Activity上

    陶士涵
  • 浅谈DES加密算法

    听着music睡
  • 这 10 行比较字符串相等的代码给我整懵了,不信你也来看看

    上面的代码是我根据原版(Scala)翻译成 Java的,Scala 版本(最开始吸引程序猿石头注意力的代码)如下:

    程序猿石头
  • 如何通过命令行 msbuild 编译项目

    本文告诉大家如何通过 msbuild 编译一个项目,通过命令行编译可以输出更多的编译信息,可以用来调试自己写的编译相关方法,可以看到是哪个文件编译失败

    林德熙
  • 「小程序JAVA实战」小程序搜索功能(55)

    PS:搜索功能,后台提供url,直接赋值到插件就可以了,通过输入关键字点击搜索,将关键字保存标识传递,关键字传递给index页面,index获取后在根据关键字查...

    IT故事会
  • VSAN存储结构解析+存储数据恢复案例

    今天给大家介绍一的是一款常见存储设备-Vsan的结构原理,相对而言技术性文字较多。VSAN是一种以vSphere内核作为基础开发出来的一款可以扩展使用的分布式存...

    北亚数据恢复中心
  • C++-面向对象(一)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    cwl_java
  • 工程师分享vsan存储结构和数据恢复方法

    VSAN是一种以vSphere内核为基础进行开发、可扩展的分布式存储架构。VSAN通过在vSphere集群主机当中安装闪存和硬盘来构建VSAN存储层,由VSAN...

    北亚数据恢复中心

扫码关注云+社区

领取腾讯云代金券