2013-01-18 31 views
0

我嘗試使用此命令從遠程登錄發送短信到模擬器短信模擬器顯示奇怪的字符

sms send (number) (body)

因爲某些原因消息有時候會在正常的英語和其他瀏覽次中文字符!

當我嘗試一下本作例子,我得到的消息完全:

sms send 123 hey man what's up 

當我嘗試,我得到中國人物:

sms send 123 car id =5, latitude = 4343.343, longitude =23112 

這裏是我的代碼:

public class SmsReceiver extends BroadcastReceiver { 

ArrayList<SmsReceivedListener> listeners = new ArrayList<SmsReceivedListener>(); 
private static SmsReceivedListener listener; 
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; 

@SuppressLint("NewApi") @Override 
public void onReceive(final Context context, final Intent intent) { 

    if (intent != null && SMS_RECEIVED.equals(intent.getAction())) { 

     final SmsMessage smsMessage = extractSmsMessage(intent); 

    if(getSmsReceivedListener()!=null) 
    { 
     String body = smsMessage.getMessageBody(); 
     Toast.makeText((Context) context, body, 
       Toast.LENGTH_LONG).show(); 
    } 

    } 
} 

@SuppressLint("NewApi") private SmsMessage extractSmsMessage(final Intent intent) { 

    final Bundle pudsBundle = intent.getExtras(); 
    final Object[] pdus = (Object[]) pudsBundle.get("pdus"); 
    final SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdus[0]); 

    return smsMessage; 

} 



} 

回答

1

在遠程登錄會話期間,我發現了與默認消息應用程序相同的問題。

該問題通常在於您的telnet客戶端和androids telnet服務器之間的通信。

打字當:

sms send 123 hello<Enter> 

馬上被正確地接收該消息。

但是,如果你輸入:

sms send 123 ha<Backspace>ello<Enter> 

您的telnet會話會顯示完全像以前一樣,但在消息傳遞應用程序接收到的消息中包含中國文字。這是由於角色沒有正確傳輸到服務器。其他字符可能會產生相同的問題。