2012-02-25 3 views
5

この質問に対する投稿された回答は見つかりませんでした。あるエミュレータインスタンスから別のエミュレータインスタンスに送信されたデータSMSの長さが受信側で切り捨てられるのはなぜですか?ここ
Iはエミュレータ554から20のバイトを送信するエミュレータ556が、エミュレータ556受信のみ 12バイト: Androidデータ2つのエミュレータ間で送信されたSMSが転送中に切り捨てられる


エミュレータ554: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!"); 
} 

送信者エミュレータにログオンします。

02-25 19:31:00.793:D/SMSテスト(257):onCreate
02-25 19:31 SMS/SMSテスト(257):D/SMSテスト(257):onResume
02-25 19:31:00.823:D/SMSテスト(257):SMSActivity.sendSMS ud.length = 20
02-25 19:31:00.823: D/SMS TEST(257):ペイロード[0] = 0
02-25 19:31:00.823:D/SMSテスト(257):ペイロード[1] = 1
02-25 19:31:00.823: D/SMS TEST(257):ペイロード[2] = 2
02-25 19:31:00.823:D/SMSテスト(257):ペイロード[3] = 3
02-25 19:31:00.823: D/SMSテスト(257):ペイロード[5] = 5
02-25 19:31:00.823: D/SMSテスト(257):ペイロード[6] = 6
D/SMSテスト(257):ペイロード(8)= 8
02-25 19:31:00.833:D/SMSテスト(257):ペイロード[8] = 8
02-25 19:31:00.833:D/SMSテスト(257):ペイロード[9] = 9
02-25 19:31:00.833:D/SMSテスト(257):ペイロード[10] = 10
02-25 19:31:00.833:D/SMSテスト(257):ペイロード[11] = 11
02-25 19:31:00.833:D/SMSテスト(257):ペイロード[12] = 12
02-25 19:31:00.833:D/SMSテスト(257):ペイロード[13] = 13
02-25 19:31:00.833:D/SMSテスト(257):ペイロード[14] = 14
02-25 19:31:00.833:D/SMSテスト(257):ペイロード[15] = 15
D/SMSテスト(257):ペイロード[17] = 17
02-25 19:31:00.853:D/SMSテスト(257):ペイロード[18] = 18
02-25 19:31:00.853:D/SMSテスト(257):ペイロード[19] = 19
02-25 19:31:00.904:D/SMSテスト(257):SMSActivity.sendSMSが完了しました!
2月25日19:31:27.044:D/SMSテスト(257):
02から25 19 onPause:31:27.583:D/SMSテスト(257):onStop


エミュレータ556:SMS受信エミュレータに受信

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

ログ:

2月25日19:31:01.593:D/SMSテスト(258):SmsReceiver.onReceive:pdus.length = 1
2月25日19 :31:01.613:D/SMSテスト(258):SmsReceiver.onReceive:ud.length = 12
02-25 19:31:01。613:D/SMSテスト(258):OUT [0] = 0
2月25日19:31:01 613:D/SMSテスト(258):OUT [1] = 1
2月25日午前19時31分: 01613:D/SMSテスト(258):OUT [2] = 2
2月25日19:31:01 613:D/SMSテスト(258):OUT [3] = 3
2月25日19時31: 01613:D/SMSテスト(258):OUT [4] = 4
2月25日19:31:01 613:D/SMSテスト(258):OUT [5] = 5
2月25日19時31: 01613:D/SMSテスト(258):OUT [6] = 6
2月25日19:31:01 613:D/SMSテスト(258):OUT [7] = 7
2月25日19時31: 01613:D/SMSテスト(258):31:01 613:D/SMSテスト(258)を[9] =[8] =
02から25 19 8〜 2月25日19:31:01 623:D/SMSテスト(258):[10] =
10 02 19〜25:623:01:31 D/SMSテスト(258):= 3 [11]に
2月25日19:31:01 623:D/SMSテスト(258):SmsReceiver.onReceiveが完了!


あなただけ見るように、データメッセージの最初の11のバイトはOK受信されています。
DDMSエミュレータコントロールパネルは Data=home, Speed=Full, Latency=None氷を設定します。 Android Development Toolkit 16.0.1.v201112150204-238534
AVDターゲットを:使用
Android 2.2 (API level 8)
Eclipse SDK 3.6.2

これはエミュレータの問題ですか?誰がこの動作を複製することはできますか?私はあまりにも長い間、この問題に引っかかってきました。すべてのヘルプは本当にいただければ幸いです!

答えて

0

それは、ポート番号と関連することができます。私はポート28を使用してデータを送信しようとしたが、それでも同じ結果を得た256未満

+0

ポート番号を使用してみてください。 –

関連する問題