2012-09-04 35 views

回答

2

意向接收器的代碼,它將從收到的意圖中讀取SMS並顯示消息。

public class SmsReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     //---get the SMS message passed in--- 
     Bundle bundle = intent.getExtras();   
     SmsMessage[] msgs = null; 
     String str = "";    
     if (bundle != null) 
     { 
      //---retrieve the SMS message received--- 
      Object[] pdus = (Object[]) bundle.get("pdus"); 
      msgs = new SmsMessage[pdus.length];    
      for (int i=0; i<msgs.length; i++){ 
       msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);     
       str += "SMS from " + msgs[i].getOriginatingAddress();      
       str += " :"; 
       str += msgs[i].getMessageBody().toString(); 
       str += "\n";   
      } 
      //---display the new SMS message--- 
      Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); 
     }       
    } 
} 

並確保在清單文件中添加此權限。

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

此外,msgs[i].getOriginatingAddress()給你短信的發送者,你可以檢查,如果這是你的具體數量或沒有。然後使用msgs[i].getMessageBody().toString();來顯示SMS的主體。

這個tutorial涵蓋了你的問題的一些方面。

希望它有幫助。

+0

如何在onCreate()中調用此onReceive()方法。什麼是語境和意圖? – JOHNZ

+0

它是一個BroadcastReceiver,當接收到任何SMS時,onReceive()將自動調用。這是通過意圖,短信數據將被髮送到這個接收機類。該教程的鏈接將解決您的問題。 – Swayam

+0

是否有任何限制,以便通過服務提供商在某些國家進行此操作 – JOHNZ

相關問題