2

次のクエリを使用して、すべての連絡先グループを取得しています。

//get list of contact groups from ContactsContract
    Cursor groups_cursor = getContentResolver()//
            .query(ContactsContract.Groups.CONTENT_SUMMARY_URI,//
                    new String[] { //
                    ContactsContract.Groups._ID,//
                            ContactsContract.Groups.TITLE, //
                            ContactsContract.Groups.DATA_SET,//
                            ContactsContract.Groups.GROUP_VISIBLE,//
                            ContactsContract.Groups.DELETED,//
                            ContactsContract.Groups.SYSTEM_ID,//
                            ContactsContract.Groups.SUMMARY_COUNT, //
                            ContactsContract.Groups.SUMMARY_WITH_PHONES //
                    },//
                    null, null, null);//

私のカーソルには、常に「家族」、「友人」、「同僚」というグループが 2 回含まれています。

これらの重複を取得するのはなぜですか?

1 つの Google アカウントを同期しています。

グループが連絡先アプリに正しく表示されます。

4

4 に答える 4

1

同様の問題がありました。私のデバイスでは、次のことに注意してください。

  • 重複するグループのペアごとに、1 つのグループには常に 0 の連絡先が含まれます ( ContactsContract.Groups.SUMMARY_COUNT)。
  • 連絡先が 0 件を超えるすべての連絡先グループには、空でないContactsContract.Groups.NOTES列があります。

空のグループが返される理由はまだ明確ではありませんが、空でないグループ、または空でないメモ列を持つグループを選択することで回避できました。

お役に立てれば!

于 2013-07-18T10:33:15.793 に答える
1

これらの空の重複グループはすべて ACCOUNT_TYPE = "DeviceOnly" であるのに対し、正当なグループは ACCOUNT_TYPE = "com.google" であることがわかりました。したがって、それをパラメーターとして追加すると、うまくいくはずです!

これが私の選択の声明です

    private static final String CONTACT_GROUP_SELECTION = ContactsContract.Groups.AUTO_ADD + " = 0 "
        + " AND " + ContactsContract.Groups.ACCOUNT_TYPE + " = 'com.google' "
        + " AND " + ContactsContract.Groups.ACCOUNT_NAME + " NOT NULL  "
        + " AND " + ContactsContract.Groups.FAVORITES + " = 0 "
        + " AND " + ContactsContract.Groups.DELETED + " = 0  ";

内部の Android ライブラリがそれらを使用するため、他の句が追加されました。これは良いアイデアのように思えました。しかし、グループの重複の問題は、「com.google」句を追加するまで解消されませんでした。

于 2014-07-24T03:38:18.787 に答える
-1

私は同じ問題に直面し(LG G4のAndroid 5.1で)、すべての答えが間違っていました。

GROUP_VISIBLE = '1'連絡先アプリケーションに表示されるすべてのグループを返すわけではありません。

NOTESすべてのグループに何らかのメモがあるため、信頼できる情報も提供しません。

ACCOUNT_TYPE- また、グループを追加したため、2 回表示されているため、com.googlefalselg.syncです。com.googlelg.sync

連絡先グループを照会する唯一の信頼できる方法は、空でないグループを選択することです。また、空のグループも表示する必要がある場合は、両方を表示する以外に何もできません。

興味深いことに、MotoG の第 1 世代の Android 5.1 では、グループが重複することなく、すべてが正常に機能しているようです。カスタムGROUP_VISIBLEグループがまったく表示されないため、うまく機能しません。

于 2016-05-25T20:07:03.117 に答える