我尝试将短信从telnet发送到模拟器
使用此命令: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;
}
}
答案 0 :(得分:1)
我在telnet会话期间发现了与默认消息传递应用程序相同的问题。
问题通常在于telnet客户端和androids telnet服务器之间的通信。
输入时:
sms send 123 hello<Enter>
立即正确收到邮件。
但如果你输入:
sms send 123 ha<Backspace>ello<Enter>
您的telnet会话将显示与之前完全相同,但消息传递应用程序中收到的消息包含中文字符。这来自于未正确传输到服务器的字符。其他角色可能会产生同样的问题。