2010-04-28 27 views
13

¿Cómo recibir SMS de texto a un puerto específico? He estado buscando una respuesta a esta pregunta pero fue en vano. Esto se ha preguntado algunas veces, pero nadie parece tener una respuesta clara. Mi código es el siguiente:cómo recibir SMS de texto al puerto específico ..

--MANIFEST FILE--

<receiver android:name=".SMSRecieve" android:enabled="true"> 
<intent-filter> 
<action android:name="android.intent.action.DATA_SMS_RECEIVED"/> 
<data android:scheme="sms" /> 
<data android:host="localhost" /> 
<data android:port="15005" /> 
</intent-filter> 
</receiver>

--SMS enviar method--

String messageText = msgTxt.getText().toString(); 
short SMS_PORT = 15005; 
SmsManager smsManager = SmsManager.getDefault(); 
smsManager.sendDataMessage("5556", null, SMS_PORT, messageText.getBytes(), null, null);

receptor --Broadcast code--

static final String ACTION = "android.intent.action.DATA_SMS_RECEIVED"; 
//static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";(tried this too, but failed) 

if (intent.getAction().equals(SMSNotifyExample.ACTION)) { 
...do some work.. 
}

También traté de reemplazar android:name por android.provider.Telephony.SMS_RECEIVED pero el resultado es el mismo.

Mi aplicación no recibe el SMS en el puerto especificado. Una vez que elimine la siguiente línea, funciona bien:

<data android:scheme="sms" /> 
<data android:host="localhost" /> 
<data android:port="15005" />

¿Podría sugerirme qué es lo que me falta?

+0

Hay una recompensa por esta pregunta. Realmente necesito que esto responda también, así que espero que alguien lo vea y tenga una respuesta. –

Respuesta

2

¡Gracias por la pista!

utilizo este y funciona:

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

[NOTA: El código que he mencionado a continuación no está trabajando en el emulador, pero con éxito en mi LG P350 con Android V2.3]

he utilizado el código de demostración dada en mobiForge pero han cambiado el sendTextMessage() a sendDataMessage() con PORT_NO como 8901 (también convertidos los datos de texto a byte [] datos). Mi receptor es:

<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> 

Un ejemplo de trabajo es KRVarma's SMSDemo que también es funcional.

Cuestiones relacionadas