您的位置:首页 > 移动开发 > Android开发

获取Android短信草稿箱号码为空的解决办法

2013-02-22 16:07 411 查看
       通过"content://sms"可以获取用于展现短信的几乎所有的信息,但是草稿箱的号码若通过"address"字段来获取的话,是空的。我目前找到了一种方法可以获取,不一定是最佳的方法。

       参考了http://bbs.csdn.net/topics/350089080。不废话了,请将下面代码(manifest里面别忘了加“<uses-permission android:name="android.permission.READ_SMS" />”这句)植入MainActivity的onCreate()里面,然后运行之:

ContentResolver resolver = getContentResolver();
Cursor cursorForThreadId = resolver.query(Uri.parse("content://mms-sms/conversations?simple=true"), null, null,
null, null);

while (cursorForThreadId.moveToNext()) {

long threadId = cursorForThreadId.getLong(cursorForThreadId.getColumnIndex("_id"));
Log.e("", "thread_id = " + threadId);

Cursor cursorSms = resolver.query(Uri.parse("content://sms"), null, "thread_id=" + threadId, null, null);

while (cursorSms.moveToNext()) {

String address = null;
/**
* Draft's "type" is 3.
*/
if (cursorSms.getInt(cursorSms.getColumnIndex("type")) == 3) {
Cursor cursorCanonicalAddress = resolver.query(
Uri.parse("content://mms-sms/canonical-address/" + threadId), null, null, null, null);
if (cursorCanonicalAddress.moveToFirst()) {
address = cursorCanonicalAddress.getString(cursorCanonicalAddress.getColumnIndex("address"));
}
cursorCanonicalAddress.close();
} else {
address = cursorSms.getString(cursorSms.getColumnIndex("address"));
}

Log.e("", "address = " + address + "  body = " + cursorSms.getString(cursorSms.getColumnIndex("body")));
}

cursorSms.close();
Log.e("", "------------------------");
}

cursorForThreadId.close();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  address ANDROID draft SMS