我希望能够提取当前存储在设备上的默认短信应用程序中的具有短信 (sms) 对话的联系人的联系信息(姓名和号码)。做这个的最好方式是什么?
问问题
77 次
1 回答
1
您可能需要查询以下 uri 以获取在 sms 和 mms 中寻址的所有地址
content://mms-sms/conversations
你需要得到address
专栏
ContentResolver contentResolver = getContentResolver();
final String[] projection = new String[]{"*"};
Uri uri = Uri.parse("content://mms-sms/conversations/");
Cursor query = contentResolver.query(uri, projection, null, null, null);
String phone = "";
while(query.moveToNext()){
phone = query.getString(query.getColumnIndex("address"));
Log.d("test",phone);
}
编辑:您可以检查从此处复制的以下功能。将从上面的地址列中选择的数字传递给这个函数
private String getContactNameFromNumber(String number) {
// define the columns I want the query to return
String[] projection = new String[] {
Contacts.Phones.DISPLAY_NAME,
Contacts.Phones.NUMBER };
// encode the phone number and build the filter URI
Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, Uri.encode(number));
// query time
Cursor c = getContentResolver().query(contactUri, projection, null,
null, null);
// if the query returns 1 or more results
// return the first result
if (c.moveToFirst()) {
String name = c.getString(c
.getColumnIndex(Contacts.Phones.DISPLAY_NAME));
c.close();
return name;
}
c.close();
// return the original number if no match was found
return number;
}
您必须编辑它以匹配您的查询,因为为每个号码调用它会很慢。
于 2012-08-16T17:40:38.767 回答