获取手机上的所有短信

fzllz 2013-05-10 12:43:21
SmsData.java
public class SmsData {
public String name;
public String phoneNumber;
public String smsbody;
public String date;
public String type;
}

MainActivity.java
public class MainActivity extends Activity {
ArrayList<SmsData> lists = new ArrayList<SmsData>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_main);

this.getSmsInPhone();
for (SmsData data : lists) {
Log.i("Message", data.name + " | " + data.phoneNumber + " | "
+ data.smsbody + " | " + data.type);
}
}

@SuppressLint("SimpleDateFormat")
public void getSmsInPhone() {
final String SMS_URI_ALL = "content://sms/";
try {
ContentResolver cr = getContentResolver();
String[] projection = new String[] { "_id", "address", "person",
"body", "date", "type" };
Uri uri = Uri.parse(SMS_URI_ALL);
Cursor cur = cr.query(uri, projection, null, null, "date desc");

if (cur.moveToFirst()) {
int nameColumn = cur.getColumnIndex("person");
int phoneNumberColumn = cur.getColumnIndex("address");
int smsbodyColumn = cur.getColumnIndex("body");
int dateColumn = cur.getColumnIndex("date");
int typeColumn = cur.getColumnIndex("type");
do {
SmsData data = new SmsData();
data.name = cur.getString(nameColumn);
data.phoneNumber = cur.getString(phoneNumberColumn);
data.smsbody = cur.getString(smsbodyColumn);
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd hh:mm:ss");
Date d = new Date(Long.parseLong(cur.getString(dateColumn)));
data.date = dateFormat.format(d);

int typeId = cur.getInt(typeColumn);
if (typeId == 1) {
data.type = "接收";
} else if (typeId == 2) {
data.type = "发送";
} else {
data.type = "";
}
this.lists.add(data);
} while (cur.moveToNext());
}
} catch (SQLiteException ex) {
Log.d("SQLiteException in getSmsInPhone", ex.getMessage());
}
}
}

有一些问题想请教一下.在已得到的数据中,data.name显示的是这个人在通讯录中的编号而不是名字,要怎么才能得到这个名字呢?再另外去查询通讯录吗?如果是,怎么做会比较好?
还有个问题,一个号码已经保存在通讯录中了,但在获取到的对该号码的发送记录中,data.name显示的是null,为什么?接收记录中的name则正常显示编号.
...全文
107 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fzllz 2013-05-10
  • 打赏
  • 举报
回复
引用 1 楼 tiewantn 的回复:
遇到过这个问题,我的解决方法是将取出来的联系人号码在去通讯录中查询一遍
那为什么发送记录中,接收人的信息会是null呢?
麦田捕手 2013-05-10
  • 打赏
  • 举报
回复
遇到过这个问题,我的解决方法是将取出来的联系人号码在去通讯录中查询一遍

80,492

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧