通過廣播接收者,接收到簡訊,對簡訊內容進行判斷,如果為我們指定的值就執行相應的操作 如果簡訊內容是”#*location*#” 就執行,獲取手機位置 如果簡訊內容是”#*alarm*#” 就執行,播放報警音樂 如果簡訊內容是”#*wipedata*#” 就執行,遠程清除數據 如果簡訊內容是”#*lo ...
通過廣播接收者,接收到簡訊,對簡訊內容進行判斷,如果為我們指定的值就執行相應的操作
如果簡訊內容是”#*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; } } } } }