0

我希望能够提取当前存储在设备上的默认短信应用程序中的具有短信 (sms) 对话的联系人的联系信息(姓名和号码)。做这个的最好方式是什么?

4

1 回答 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 回答