各位,鄙人刚刚开始接触android开发,初期实验时发现使用Emulator Control调试中文短信,收到的只能是乱码,如何能够收到中文呢。还请各位高手指点,谢谢!
------解决方案--------------------
我们看一下方法类:
01.package com.smart.sms;
02.
03.import android.content.BroadcastReceiver;
04.import android.content.Context;
05.import android.content.Intent;
06.import android.os.Bundle;
07.import android.telephony.SmsMessage;
08.import android.widget.Toast;
09.
10.public class SmsReceiver extends BroadcastReceiver{
11.
12. @Override
13. public void onReceive(Context context, Intent intent) {
14.
15. if("android.provider.Telephony.SMS_RECEIVED".equals(intent.getAction())){
16.
17. StringBuilder sb=new StringBuilder();
18. // 接收由SMS传过来的数据
19. Bundle bundle=intent.getExtras();
20. // 判断是否有数据
21. if(bundle!=null){
22. //通过pdus可以获得接收到的所有短信消息
23. Object[] objArray=(Object[]) bundle.get("pdus");
24. //构建短信对象array,并依据收到的对象长度来创建array的大小
25. SmsMessage[] message=new SmsMessage[objArray.length];
26.
27. for (int i = 0; i < objArray.length; i++) {
28. message[i]=SmsMessage.createFromPdu((byte[])objArray[i]);
29. }
30. // 将送来的短信合并自定义信息于StringBuilder当中
31. for (SmsMessage currentMessage:message) {
32. sb.append("短信来源");
33. // 获得接收短信的电话号码
34. sb.append(currentMessage.getDisplayMessageBody());
35. sb.append("\n------短信内容------\n");
36. // 获得短信的内容
37. sb.append(currentMessage.getDisplayMessageBody());
38.
39. }
40. Intent mainIntent=new Intent(context,SmsActivity.class);
41. mainIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
42. context.startActivity(mainIntent);
43. Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG).show();
44.
45. }
46.
47.
48. }
49. }
50.
51.}
main.xml文件编写代码:
01.<?xml version="1.0" encoding="utf-8"?>
02.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03. android:orientation="vertical"
04. android:layout_width="fill_parent"
05. android:layout_height="fill_parent"