获取联系人按人气排序

时间:2012-06-15 11:36:30

标签: android contacts android-contacts

我有一个应用程序,我想显示联系人按受欢迎程度排序,例如调用该联系人的次数。另一种选择:任何有照片的人排序。我希望它在没有用户选择的情况下自动完成!我将不胜感激任何帮助!即使是部分答案!

谢谢!

3 个答案:

答案 0 :(得分:2)

使用此查询

   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 :(得分:0)

如果联系人存储在数据库中,您需要添加一个额外的列,您可以在其中输入联系人被调用的次数。

当用户拨打电话时,您需要添加一些代码,以便将“联系人被调用次数”列中存储的值增加+1。

列出联系人时,只需按“调用联系人的次数”列对其进行排序。

答案 2 :(得分:0)

我们没有任何此类专栏来检查联系人是否有照片... bt你可以获取联系人照片,如果它存在,那么将它放在顶部,否则不会...

使用此代码获取照片:(只需传递内容解析器和每个联系人的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);