私はアプリケーションを持っていて、その連絡先に電話をかけた回数など、連絡先を人気順に並べ替えて表示したいと考えています。別のオプション: 写真を持っている人で並べ替えます。ユーザーの選択なしで自動的に実行したい! 助けていただければ幸いです。部分的な回答でも!
ありがとうございました!
私はアプリケーションを持っていて、その連絡先に電話をかけた回数など、連絡先を人気順に並べ替えて表示したいと考えています。別のオプション: 写真を持っている人で並べ替えます。ユーザーの選択なしで自動的に実行したい! 助けていただければ幸いです。部分的な回答でも!
ありがとうございました!
このクエリを使用
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();
}
連絡先に写真があるかどうかを確認するためのそのような列はありません... 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);
連絡先がデータベースに保存されている場合は、連絡先が呼び出された回数を入力する追加の列を追加する必要があります。
ユーザーが電話をかけると、「連絡先が呼び出された回数」列に格納されている値を +1 ずつ増やすコードを追加する必要があります。
連絡先をリストするときは、「連絡先が呼び出された回数」列で並べ替えるだけです。