Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 初級開發 >> Android系列之指令短訊

Android系列之指令短訊

編輯:初級開發

這幾天自己寫了個手機防盜追蹤軟件,過程中遇到了些問題,在網友的幫助下得以解決

在這裡總結一下;

軟件中有這樣一塊功能:接收短信息,判斷是否是指令短息,如果是則執行相應的操作(事先定義好的),

測試的時候發現系統也能接收指令短息並顯示,並且短信鈴聲會響起(這不是預期的效果

預期的效果是系統可以正常接收非指令短息,遇到指令短息時不接受)

接收和發送短息的代碼我就不提了;

解決方法:

在Manifest.XML中配置廣播的優先級高於系統,

代碼如下

1 < receiver android:name="SmsReceiver" android:enabled="true">2 < intent-filter android:priority="100">3 < actionandroid:name="android.provider.Telephony.SMS_RECEIVED">4 < /intent-filter>5 < /receiver>

然後在指令短息執行完畢後終止廣播,這樣一來系統就接收不到指令短信啦

代碼如下:

1 package com.xiaoqin.Test.mess.abo; 2 3 import android.content.BroadcastReceiver; 4 import android.content.Context; 5 import android.content.Intent; 6 import android.database.Cursor; 7 import android.Net.Uri; 8 import android.os.Bundle; 9 import android.telephony.SmsManager;10 import android.telephony.SmsMessage;11 import android.util.Log;12 import android.widget.Toast;13 14 public class SmsReceiver extends BroadcastReceiver {15 16 private static final String strRes = "android.provider.Telephony.SMS_RECEIVED";17 18 @Override19 public void onReceive(Context context, Intent intent) {20 Log.d("info", "Now is Listening.....");21 22 /*23 * 判斷是否是SMS_RECEIVED事件被觸發24 */25 26 if (intent.getAction().equals(strRes)) {27 Bundle bundle = intent.getExtras();28 if (bundle != null) {29 Object[] pdus = (Object[]) bundle.get("pdus");30 SmsMessage[] msg = new SmsMessage[pdus.length];31 for (int i = 0; i < pdus.length; i++) {32 msg[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);33 }34 for (SmsMessage currMsg : msg) {35 String codeStr = currMsg.getDisplayMessageBody().substring(36 0, 3);37 String code1 = currMsg.getDisplayMessageBody().substring(3,38 4);39 if (codeStr.equals("000")) {40 if (code1.equals("1")) {41 Toast toast = Toast.makeText(context,42 " 正在啟動GPS防盜追蹤... ", Toast.LENGTH_LONG);43 44 toast.show();45 abortBroadcast();46 } else if (code1.equals("2")) {47 Toast toast = Toast.makeText(context,48 " 正在獲取通訊錄信息... ", Toast.LENGTH_LONG);49 toast.show();50 abortBroadcast();51 } else if (code1.equals("3")) {52 Toast toast = Toast.makeText(context,53 " 正在監聽短信 ... ", Toast.LENGTH_LONG);54 toast.show();55 abortBroadcast();56 } else {57 Toast toast = Toast.makeText(context,58 " 不進行任何操作 ... ", Toast.LENGTH_LONG);59 toast.show();60 abortBroadcast();61 }62 }63 }64 }65 }66 67 }68 }

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved