2012-02-25 23 views
5

Bu soruya verilen yanıtı bulamadım. Neden bir veri SMS'inin uzunluğu, bir emülatör örneğinden diğerine programlı olarak gönderilen alıcı sınırında neden kısılır? İşte
Ben emülatörü-554ila 20 bayt göndermek emülatör-556 ancak emülatörü-556aldığı tek 12 byte: Android veriler İki emülatör arasında gönderilen SMS'lerin geçişi kesildi


emülatörü-554: SMS gönderen

/** 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!"); 
} 

gönderen emülatörü Log:

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


emülatörü-556: SMS alıcı emülatörü alıcı

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!"); 
     } 
    } 
} 

Giriş:

02-25 19: 31: 01,593: D/SMS TESTİ (258): SmsReceiver.onReceive: pdus.length = 1
02-25 19 : 31: 01.613: D/SMS TEST (258): SmsReceiver.onReceive: ud.length = 12
02-25 19:31:01.613: D/SMS TESTİ (258): üzerinden [0] = 0
02-25 19: 31: 01 613: D/SMS TESTİ (258): üzerinden [1] = 1
02-25 19:31: 01.613: D/SMS TESTİ (258): üzerinden [2] = 2
02-25 19: 31: 01 613: D/SMS TESTİ (258): üzerinden [3] = 3
02-25 19:31: 01.613: D/SMS TESTİ (258): üzerinden [4] = 4
02-25 19: 31: 01 613: D/SMS TESTİ (258): üzerinden [5] = 5
02-25 19:31: 01.613: D/SMS TESTİ (258): üzerinden [6] = 6
02-25 19: 31: 01 613: D/SMS TESTİ (258): üzerinden [7] = 7
02-25 19:31: 01.613: D/SMS TESTİ (258): 31: 01 613: D/SMS TESTİ (258) üzerinden [9] =[8] =
02-25 19 8'den 02-25 19: 31: 01 623: D/SMS TESTİ (258) yer: [10] =
02-25 Ekim 19: 31: 01 623: D/SMS TESTİ (258): [11] '= 3
02-25 19: 31: 01 623: D/SMS TESTİ (258): SmsReceiver.onReceive TAMAMLANDI!


veri mesajının sadece ilk 11 byte Tamam alınır Gördüğünüz gibi.
DDMS emülatörü kontrol paneli Data=home, Speed=Full, Latency=None buz ayarları. Android Development Toolkit 16.0.1.v201112150204-238534
AVD hedefi: Kullanılması
Android 2.2 (API level 8)
Eclipse SDK 3.6.2

bu bir emülatör sorunu var mı? başkası bu davranışı uygulayabilir misiniz? Çok uzun zamandır bu sorun takılıp edilmiştir. Herhangi bir yardım gerçekten takdir!

cevap

0

O Port Numarası ile ilişkili olabilir. 256.

+0

I kapısına 28 Kullanma gönderme verileri denedik ama yine aynı sonucu aldık az port numarasını kullanmaya çalışın. –

İlgili konular