2013-07-16 6 views
1

У меня проблема при получении длинного двоичных сообщений. Предполагается, что клиент получит множественные бинарные SMS. При поиске stackoverflow люди упоминали, что onReceive() запускается только один раз. Оттуда вы можете объединить несколько SMS.Broadcast Receiver Long Binary SMS

Я не уверен, что при отправке бинарных SMS-сообщений. Я получаю 2 SMS, а onReceive запускается дважды. SMS отдельно друг от друга делают невозможным конкатенацию.


AndroidManifest:

<uses-permission android:name="android.permission.READ_SMS" /> 
<uses-permission android:name="android.permission.SEND_SMS" /> 
<uses-permission android:name="android.permission.RECEIVE_SMS" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

<receiver 
     android:name="com.myapp.smsnotification.SMSReceiver" 
     android:enabled="true" > 
     <intent-filter android:priority="100" > 
      <action android:name="android.intent.action.DATA_SMS_RECEIVED" /> 
      <data 
       android:host="localhost" 
       android:port="9515" 
       android:scheme="sms" /> 
     </intent-filter> 
</receiver> 

SMSReceiver.java

в моей OnReceive()

Bundle bundle = intent.getExtras(); 
if (bundle != null) { 
    Object[] pdus = (Object[]) bundle.get("pdus"); 
    SmsMessage[] messages = new SmsMessage[pdus.length]; 
    for (int i = 0; i < pdus.length; i++) { 
     messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
    } 
    try { 
     if (messages.length > -1) { 
      ByteArrayOutputStream os = new ByteArrayOutputStream(); 
      for (int i = 0; i < messages.length; i++) { 
       SmsMessage message = messages[i]; 
       os.write(message.getUserData()); 
      } 
      byte[] stream = os.toByteArray(); 
      // do something with stream 
     } 
    } catch (Exception e) { 
     Log.e(TAG, e.getMessage()); 
    } 
} 

ответ

0

Найдено, что это не было проблемой на стороне клиента, но на стороне сервера. Они не включали в заголовок User Data Head часть, указывающую, что сообщение представляет собой объединенное SMS.

Если протокол соблюден, Android сможет его обнаружить и обработать соответствующим образом, ожидая прибытия всех SMS-сообщений и прислушайте приемник SMS-сообщений, который будет содержать все полученные SMS-сообщения.

+0

Привет @mussharapp, как вы подтверждаете свое заключение? – ericn

Смежные вопросы