2010-03-24 102 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(); 
       } 
      } 

     } 

    } 
相关问题