2010-03-24 5 views

Répondre

5

Vous devez enregistrer un récepteur de diffusion pour android.provider.Telephony.SMS_RECEIVED. Le destinataire peut alors vérifier le numéro du SMS et démarrer votre activité selon le cas.

Ainsi, vous devrez:

  • Ajouter un uses-permission pour android.permission.RECEIVE_SMS à votre manifeste
  • Déclarer un récepteur de diffusion dans votre élément <application/> dans le manfiest:

    <receiver android:name=".YourReceiverName"> 
        <intent-filter> 
         <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
    </receiver> 
    
  • Créez la classe de réception, en prolongeant IntentReceiver.

  • Dans onReceiveIntent, vous pouvez obtenir les messages pertinents en appelant Telephony.Sms.Intents.getMessagesFromIntent() et en transmettant l'intention que vous avez reçue.
  • Si le numéro correspond à celui que vous voulez, vous pouvez alors commencer une activité en appelant startActivity
+0

Chris thanks 4 ur réponse Ther est un problème dans Telephony.Sms.Intents.getMessagesFromIntent() Peut-être itz déprécié, donc Wat à utiliser à la place .. – MAkS

+0

Vous pouvez utiliser 'SmsMessage.createFromPdu'. Un tableau de PDU est disponible à partir de l'ensemble que vous pouvez obtenir à partir de l'intention - 'byte [] [] pdus = (byte [] []) intention.getExtras(). Get (" pdus ");' ou – Chris

0

ici est ma méthode onReceive(), cela fonctionne :)

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(); 
       } 
      } 

     } 

    }