標籤:android 簡訊 攔截
概述:
說實話,關於Android中對簡訊的一些相關操作是一個比較入門的東西。那我現在還要來寫這一篇部落格的原因只是因為現在開發中有相關內容,而又想將這些東西分享給更多的人來學習,同時在以後對Android系統的簡訊進行其他學習的時候也就放在這裡做一個記錄了,於是就寫了這篇囉嗦的文章。如果你覺得這是一個不錯的東西,歡迎收藏,以便在以後更方便地查看本人在此篇文章中更新的內容。下面我就從標題中的三個方面來對Android系統中的簡訊操作進行一個簡單地學習。
簡訊的發送
由於Android中對簡訊發送方法的優良封裝,之後對傳送簡訊的開發就顯得異常的簡單了。
public static void sendMessage(Context context, String content, String phoneNumber) { SmsManager sms = SmsManager.getDefault(); PendingIntent pi = PendingIntent.getBroadcast(context, 0, new Intent(), 0); sms.sendTextMessage(phoneNumber, null, content, pi, null); }
別忘了還有許可權問題:
<uses-permission android:name="android.permission.SEND_SMS" />
簡訊的接收
對於簡訊息的接收相對來說會複雜一些。而複雜的原因大家也應該比較容易理解——接收是不可控制的。也就是說我們的手機根本不知道什麼時候會有一條簡訊息過來。由於過於被動,Android的機制中就出現了一個強大到讓你佩服的東西,那就是廣播接收者。我們註冊一個廣播接收者,然後讓這個廣播接收者時時刻刻地去監聽簡訊息是否到達的這一事件。就這樣,被動觸發事件完美地解決了。下面讓我們來看看這個過程:
public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) { Bundle bundle = intent.getExtras(); Object messages[] = (Object[]) bundle.get("pdus"); SmsMessage smsMessage[] = new SmsMessage[messages.length]; for (int n = 0; n < messages.length; n++) { smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]); } showToast(context, "簡訊內容: " + smsMessage[0].getMessageBody()); } }添加許可權:
<uses-permission android:name="android.permission.RECEIVE_SMS" /><uses-permission android:name="android.permission.READ_SMS" />
以及在manifest中進行一個靜態註冊:
<receiver android:name=".broadcast.SMSReceiver" > <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>
簡訊的攔截
在能夠接收簡訊的基礎上做一個簡訊攔截倒是簡單了許多。因為能夠接收,所以我只要成為第一個接收的人,並把接收到的簡訊不再向下傳播,這就完成了簡訊息的攔截了。
提高優先權:
阻斷傳播:
Android從普通發送和接收簡訊到對簡訊進行攔截