[Android] 接收SMS(簡訊)-收藏

摘要:[Android] 接收SMS(簡訊)

 

Android中可以利用BroadcastReceiver來監聽是否收到簡訊,像是Line之類的利用簡訊來認證手輸入的手機號碼是否正確。接收的方式很簡單,首先AndroidManifest.xml要定義權限:

 

1 <uses-permission android:name="android.permission.RECEIVE_SMS" />

 

然後在Application中註冊Receiver:

1 <receiver
2     android:name=".SMSReceiver"
3     android:enabled="true" >
4     <intent-filter>
5         <action android:name="android.provider.Telephony.SMS_RECEIVED" />
6     </intent-filter>
7 </receiver>

 

接下來是Receiver的程式碼:

 

01 import android.content.BroadcastReceiver;
02 import android.content.Context;
03 import android.content.Intent;
04 import android.os.Bundle;
05 import android.telephony.SmsMessage;
06  
07 public class SMSReceiver extends BroadcastReceiver{
08  
09     private static final String queryString = "xxxx:";
10  
11     @Override
12     public void onReceive(Context context, Intent intent) {
13         Bundle bundle = intent.getExtras();
14         if (bundle == null)
15             return;
16  
17         Object[] pdus = (Object[]) bundle.get("pdus");
18  
19         for (int i = 0; i < pdus.length; i++) {
20             SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus[i]);
21             String fromAddress = message.getOriginatingAddress();
22  
23             String msg = message.getMessageBody();
24             if (msg.startsWith(queryString)) { //如果是接到要處理的簡訊
25                 abortBroadcast(); //停止發送廣播給其它app
26             }
27             
28         }
29             
30     }
31  
32 }

 

當然,一般來說不會一直開著監聽,所以我預設都是把它關掉(從AndroidManifest.xml設定android:enable為false),然後再利用啟動服務的的方式打開,收到要的之後再關掉。

 

1 // 開啟監聽
2 final PackageManager pm = this.getPackageManager();
3 final ComponentName componentName = new ComponentName(this, SMSReceiver.class);
4 pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

 

 

引用:http://www.dotblogs.com.tw/alonstar/archive/2012/12/26/android_sms.aspx

 


寫文章並不為了什麼,只是撰寫文章的過程中,可以使我的去思考更多層面的東西,寫的過程中也可以再次回味學習到的東西,並深刻的印象在腦中。


當你還在找這些資訊學習時,我想安逸的生活還不適合你,一起努力吧。