2012-02-25 8 views
5

Nie mogłem znaleźć opublikowanej odpowiedzi na to pytanie. Dlaczego długość wiadomości SMS wysyłanej programowo z jednej instancji emulatora do innej zostaje obcięta na końcu odbierającym?
Oto Ja posyłam 20 bajtów z emulator-554 do emulator-556, ale emulator-556 odbiera tylko 12 bajtów: Wiadomości SMS z systemu Android wysyłane między dwoma emulatorami zostają skrócone w trakcie przesyłania


emulator-554: nadawca SMS

/** Send data SMS between two emulators from 15555215554 to 15555215556. */ 
private void sendSMS() 
{ 
    final int udLength = 20; // SMS user data length in bytes 
    Log.d("SMS TEST", "SMSActivity.sendSMS ud.length=" + udLength); 
    byte[] payload = new byte[udLength]; 
    for (byte i = 0; i < udLength; i++) 
    { 
     Log.d("SMS TEST", "payload[" + i + "]=" + i); 
     payload[i] = i; 
    } 

    Intent smsSentIntent = new Intent("SMS_SENT"); 
    PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, smsSentIntent, 0); 
    String destTelephone = "15555215556"; 
    SmsManager smsMgr = SmsManager.getDefault();  
    smsMgr.sendDataMessage(destTelephone, null, (short) 32766, payload, sentPI, null); 
    Log.d("SMS TEST", "SMSActivity.sendSMS COMPLETED!"); 
} 

log w emulatorze nadawcy:

02-25: 19: 31: 00,793: D Test/SMS (257) onCreate
02-25 19:31 : 00.793: test D/SMS (257): onResume
02-25 19: 31: 00.823: test D/SMS (257): SMSActivity.sendSMS ud.length = 20
02-25 19: 31: 00.823: Test D/SMS (257): ładunek [0] = 0
02-25 19: 31: 00.823: test D/SMS (257): ładunek [1] = 1
02-25 19: 31: 00.823: Test D/SMS (257): ładunek [2] = 2
02-25 19: 31: 00.823: Test D/SMS (257): ładunek [3] = 3
02-25 19: 31: 00.823: D/SMS TEST (257): ładunek [4] = 4
02-25 19: 31: 00.823: test D/SMS (257): ładunek [5] = 5
02-25 19: 31: 00.823: Test D/SMS (257): ładunek [6] = 6
02-25 19: 31: 00.823: test D/SMS (257): ładunek [7] = 7
02-25 19: 31: 00.833: ​​test D/SMS (257): ładunek [8] = 8
02-25 19: 31: 00.833: ​​test D/SMS (257): ładunek [9] = 9
02-25 19: 31: 00.833: ​​test D/SMS (257): ładunek [10] = 10
02-25 19: 31: 00.833: ​​test D/SMS (257): ładunek [11] = 11
02-25 19: 31: 00.833: ​​test D/SMS (257): ładunek [12] = 12
02-25 19: 31: 00.833: ​​test D/SMS (257): ładunek [13] = 13
02-25 19: 31: 00.833: ​​test D/SMS (257): ładunek [14] = 14
02-25 19: 31: 00.833: ​​test D/SMS (257): ładunek [15] = 15
02-25 19: 31: 00.833: ​​test D/SMS (257): ładunek [16] = 16
02-25 19: 31: 00.833: ​​test D/SMS (257): ładunek [17] = 17
02-25 19: 31: 00.853: test D/SMS (257): ładunek [18] = 18
02-25 19: 31: 00.853: test D/SMS (257): ładunek [19] = 19
02-25 19: 31: 00.904: Test D/SMS (257): SMSActivity.sendSMS COMPLETED!
25/02 19: 31: 27,044: D/Test SMS (257) OnPause
02-25 19: 31: 27,583: D/Test SMS (257) OnStop


emulatora-556: SMS odbiornik

public class SmsReceiver extends BroadcastReceiver 
{ 
    /** BroadcastReceiver listener. */ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) 
     { 
      Bundle bundle = intent.getExtras(); 
      Object[] pdus = (Object[]) bundle.get("pdus"); 
      Log.d("SMS TEST", "SmsReceiver.onReceive: pdus.length=" + pdus.length); 
      SmsMessage inboundSMS = SmsMessage.createFromPdu((byte[]) pdus[0]); // pdus.length==1 
      byte[] ud = inboundSMS.getUserData(); 
      int udLength = ud.length; 
      Log.d("SMS TEST", "SmsReceiver.onReceive: ud.length=" + udLength); 
      for (int i = 0; i < udLength; i++) 
      { 
       Log.d("SMS TEST", "ud[" + i + "]=" + ud[i]); 
      } 
      Log.d("SMS TEST", "SmsReceiver.onReceive COMPLETED!"); 
     } 
    } 
} 

dziennika w emulatorze przyjmującej:

02-25 19: 31: 01,593: D Test/SMS (258) SmsReceiver.onReceive: pdus.length = 1
02-25 19 : 31: 01.613: test D/SMS (258): SmsReceiver.onReceive: ud.length = 12
02-25 19:31:01.613: D/Test SMS (258) z [0] = 0
25/02 19: 31: 01 613: D Test/SMS (258) z [1] = 1
02-25 19:31: 01613: D Test/SMS (258) z [2] = 2
25/02 19: 31: 01 613: test D/SMS (258) na [3] = 3
02-25 19:31: 01613: D Test/SMS (258) na [4] = 4
25/02 19: 31: 01 613: test D/SMS (258) z [5] = 5
02-25 19:31: 01613: D Test/SMS (258) z [6] = 6
25/02 19: 31: 01 613: test D/SMS (258) z [7] = 7
02-25 19:31: 01613: D Test/SMS (258) w [8] = 8
25/02 19: 31: 01 613: D Test/SMS (258) z [9] = 25/02 19: 31: 01 623: test D/SMS (258) w [10] =
10 02 25 19: 31: 01 623: D Test/SMS (258) w [11] = 3
25/02 19: 31: 01 623: test D/SMS (258) SmsReceiver.onReceive zakończona


Jak widać tylko pierwsze 11 bajtów danych wiadomości odbierane są w porządku.
Centrala emulator DDMS ustawień Data=home, Speed=Full, Latency=None lodu.
Zastosowanie: Android Development Toolkit 16.0.1.v201112150204-238534
AVD cel: Android 2.2 (API level 8)
Eclipse SDK 3.6.2

Czy ten problem emulator? Może ktoś inny replikować to zachowanie? Zostałem zatrzymany na ten problem zbyt długo. Każda pomoc będzie bardzo mile widziana!

Odpowiedz

0

To może być związane z Port Number. Spróbuj użyć numeru portu mniej niż 256.

+0

Próbowałem wysyłanie danych przez port 28, ale wciąż mam ten sam rezultat. –

Powiązane problemy