2010-03-24 85 views

回答

5

您需要爲android.provider.Telephony.SMS_RECEIVED註冊廣播接收器。接收者可以檢查短信號碼並根據需要開始您的活動。

所以,你需要:

  • android.permission.RECEIVE_SMS添加uses-permission到您的清單
  • 聲明的廣播接收器在manfiest您<application/>元素:

    <receiver android:name=".YourReceiverName"> 
        <intent-filter> 
         <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
    </receiver> 
    
  • 創建接收器類,延長IntentReceiver

  • onReceiveIntent中,您可以通過調用Telephony.Sms.Intents.getMessagesFromIntent()並傳遞您提供的意圖來獲取相關消息。
  • 如果該號碼符合你想要的,然後你可以通過調用startActivity
+0

克里斯感謝4烏拉圭回合的反應 療法開始活動是Telephony.Sms.Intents.getMessagesFromIntent()中的一個問題 也許itz不推薦使用,所以請使用Wat .. – MAkS 2010-03-24 07:19:34

+0

您可以使用'SmsMessage.createFromPdu'。可以從Bundle獲得一個PDU數組,你可以從intent獲得 - byte [] [] pdus =(byte [] [])intent.getExtras()。get(「pdus」);'' – Chris 2010-03-24 07:30:09

0

這裏是我的onReceive()方法,它的工作原理:)

public void onReceive(Context context, Intent intent) { 
     // get incoming message 
     Bundle extras = intent.getExtras(); 

     String messages = ""; 

     // if message available, go on 
     if (extras != null) { 
      // get the array of the message 
      Object[] smsExtra = (Object[]) extras.get("pdus"); 

      // loop through the number of available messages 
      for (int i = 0; i < smsExtra.length; ++i) { 
       // create smsmessage from raw pdu 
       SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]); 

       // retrieve contents of message 
       String body = sms.getMessageBody().toString(); 
       String address = sms.getOriginatingAddress(); 

       // only accept messages from specified number    
       if(address.equals(0000)){ 
          // store the message to database 
        storeToDatabase(contentResolver, sms); 
         // stop message from getting to default app 
        this.abortBroadcast(); 
       } 
      } 

     } 

    } 
相關問題