![](/img/trans.png)
[英]Android contacts Display Name and Phone Number(s) in single database query?
[英]Android Get Distinct contacts on the basis of phone number and display name
我試圖根據電話號碼和姓名獲得不同的聯系人。 我得到了所有的聯系,但得到了重復。 這是我的代碼
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String[] projection = {
ContactsContract.Data.CONTACT_ID,
ContactsContract.Data.DISPLAY_NAME,
ContactsContract.Data.DATA1
};
Cursor phones = getContentResolver().query(
uri, projection,ContactsContract.Data.MIMETYPE + "='" + `ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "' AND " + ContactsContract.Data.DATA1 + "!=''", null, null);// uri, projection,selection+ ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "' AND " + ContactsContract.Data.DATA1 + "!=''", null, null);`
if (phones.moveToFirst()) {
do {
long ID = phones.getLong(phones.getColumnIndex(projection[0]));
String DisplayName = phones.getString(phones.getColumnIndex(projection[1]));
String Key = phones.getString(phones.getColumnIndex(projection[2]));
if (Key != null && Key.toString().trim().length() > 0 && (Key.startsWith("0") || Key.startsWith("+"))) {
ContactBean contactModel = new ContactBean(DisplayName, Key, "");
list.add(contactModel);
} else {
// No number!!
}
} while (phones.moveToNext());
}
獲得不同聯系人的任何幫助。
我的投影已經在其上應用了 Distinction。 當我嘗試像這樣對其應用不同的查詢時
String selection = " 'SELECT DISTINCT " + ContactsContract.Data.DISPLAY_NAME+"'";
我收到了這個錯誤。
SELECT DISTINCT contact_id, display_name, data1 FROM view_data_restricted data LEFT OUTER JOIN (SELECT data_usage_stat.data_id as STAT_DATA_ID, SUM(data_usage_stat.times_used) as times_used, MAX(data_usage_stat.last_time_used) as last_time_used FROM data_usage_stat GROUP BY data_usage_stat.data_id) as data_usage_stat ON (STAT_DATA_ID=data._id) WHERE (1) AND (( 'SELECT DISTINCT contact_id'mimetype='vnd.android.cursor.item/phone_v2' AND data1!=''))
這表明我的投影已經應用了一個選擇。 但是為什么它不起作用。有什么解決方案嗎?
// set as global
Set<string> phonenumbersList = new HashSet<string>();
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
while (phones.moveToNext())
{
String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
//contact has name number and phonenumber does not exists in list
if ( phoneNumber != null && name != null && !phonenumbersList.contains(phoneNumber)){
planets = new ContactsList[]{ new ContactsList(name, phoneNumber) };
phonenumbersList.add(phoneNumber);
planetList.addAll(Arrays.asList(planets));
planetList.Add(phoneNumber, name);
}
}
phones.close();
獲取電話號碼和聯系人姓名的簡單方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.