2010-09-21 25 views
8

Ich habe ein paar Tutorials gefunden, wie Text-SMS-Nachrichten senden/empfangen, aber keine auf, wie Daten von SMS-Nachrichten senden/empfangen. Ich habe eine sehr kleine Menge an Daten, die ich den Nutzern meiner App mitteilen möchte.Wie Daten senden und empfangen SMS-Nachrichten

Ich bin in der Lage zu senden, aber meine BroadcastReceiver nicht immer aufgerufen. Es scheint, dass dies ein bekanntes Problem ist (http://code.google.com/p/android/issues/detail?id=1576), aber hat jemand herausgefunden, wie man das schon macht?

Ich habe versucht, das Senden/Empfangen von SMS einen Text und das funktioniert gut, die Sache ist die, ich brauche meine App für das SMS hören kann so nur einen Port angeben.


Es scheint, diese Frage hier zuvor gestellt wurde, und wurde nie beantwortet: how to receive text sms to specific port..

+0

ich etwas ähnliches hier tue !!! http://stackoverflow.com/questions/14452808/sending-and-receiving-mms-in-android – toobsco42

Antwort

23

Ich weiß, das zum Zeitpunkt meiner Antwort 1 Jahr alt ist, aber ich dachte, es noch jemand helfen könnte.
Empfangen:

Bundle bundle = intent.getExtras(); 

      String recMsgString = "";    
      String fromAddress = ""; 
      SmsMessage recMsg = null; 
      byte[] data = null; 
      if (bundle != null) 
      { 
       //---retrieve the SMS message received--- 
       Object[] pdus = (Object[]) bundle.get("pdus"); 
       for (int i=0; i<pdus.length; i++){ 
        recMsg = SmsMessage.createFromPdu((byte[])pdus[i]); 

        try { 
         data = recMsg.getUserData(); 
        } catch (Exception e){ 

        } 
        if (data!=null){ 
         for(int index=0; index<data.length; ++index) 
         { 
           recMsgString += Character.toString((char)data[index]); 
         } 
        } 

        fromAddress = recMsg.getOriginatingAddress(); 
       } 

Einstellung Empfänger in Manifest auf:

<receiver android:name=".SMSReceiver"> 
     <intent-filter> 
     <action android:name="android.intent.action.DATA_SMS_RECEIVED" /> 
      <data android:scheme="sms" /> 
      <data android:port="8901" /> 
     </intent-filter> 
</receiver> 

Senden:

String messageText = "message!"; 
short SMS_PORT = 8901; //you can use a different port if you'd like. I believe it just has to be an int value. 
SmsManager smsManager = SmsManager.getDefault(); 
smsManager.sendDataMessage("8675309", null, SMS_PORT, messageText.getBytes(), null, null); 
+0

Geck, das ist genial, danke. –

+1

Ich bin froh, dass ich helfen konnte. Bitte. – Jakar

+1

+1 für den Tommy Tutone Referenz –

Verwandte Themen