我有一个应用程序,我想显示联系人按受欢迎程度排序,例如呼叫该联系人的次数。另一种选择:按任何有图片的人排序。我希望它在没有用户选择的情况下自动完成!我将不胜感激任何帮助!即使是部分答案!
谢谢!
我有一个应用程序,我想显示联系人按受欢迎程度排序,例如呼叫该联系人的次数。另一种选择:按任何有图片的人排序。我希望它在没有用户选择的情况下自动完成!我将不胜感激任何帮助!即使是部分答案!
谢谢!
使用这个查询
ContentResolver cr = getContentResolver();
Cursor cur2 = cr.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, "times_contacted desc");
cur2.moveToFirst();
int name=cur2.getColumnIndex("display_name");
for(int i=0;i<cur2.getCount();i++){
Log.v("name",""+cur2.getString(name));
Log.v("times",""+cur2.getString(0));
cur2.moveToNext();
}
如果联系人存储在数据库中,您需要添加一个额外的列,您将在其中输入联系人被调用的次数。
当用户拨打电话时,您需要添加一些代码以将存储在“联系人被呼叫次数”列中的值增加 +1。
当您列出联系人时,只需按“联系人被呼叫的次数”列对其进行排序。
我们没有任何此类列来检查联系人是否有照片... bt 如果存在,您可以获取 eact 联系人的联系人照片,然后将其放在顶部,否则不...
使用此代码获取照片:(只需传递每个联系人的内容解析器和 ID)
public static Bitmap loadContactPhoto(ContentResolver cr, long id) {
Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id);
InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri);
// InputStream input = ContactsContract.Contacts.Photo
if (input == null) {
return null;
}
return BitmapFactory.decodeStream(input);