質問

残念ながら、私は電話帳に約500の連絡先があり、何らかの理由でThunderbirdと同期した後、ディスプレイ名はランダムであり、最初は最初です。だから、私は簡単なウィジェットをまとめて、ディスプレイ名が最初に続くようにやり直すだけだと思った。私が使用するコードは以下ですが、最後 /最初の値を取得していません。カーソルのキーは存在します(data1、data2)が、値はそれぞれ「1」とnullでした。何か案は?

Cursor cursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, null, null, null);

        while (cursor.moveToNext() != false) {

        String id = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID));

        String fname = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));

        String lname = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));

        if (lname != null && lname.length() > 0) {

              String sDName = lname + "," + fname;

              ContentValues values = new ContentValues();

              values.put(ContactsContract.Contacts.DISPLAY_NAME, sDName);

              getContentResolver().update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Contacts._ID+"=", new String[] {id});

        }

        }
役に立ちましたか?

解決

ContactScontract.Dataには、共有テーブルに、郵便番号、電話番号、電子メール、Webサイト、写真など、さまざまな種類のすべての情報が含まれています。

興味のある情報を含む行を除外する必要があります。

クエリで、where句を追加します。

query(ContactsContract.Data.CONTENT_URI,  Data.MIMETYPE + "=?", 
    new String[]{StructuredName.CONTENT_ITEM_TYPE}, null, null);

のドキュメントを参照してください contactscontract.data

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top