特定の連絡先が特定のグループのメンバーであるかどうかを確認する必要があります。私は以下のコードで作業しており、Gingerbreadを実行している受話器を使用して動作することを証明しました。ただし、Androidバージョン4.0.3を実行しているHTC One Sで実行しようとしましたが、失敗します。API仕様は変更されましたか?私のコードは以下の通りです。
public boolean checkGroupMembership(String groupID, String contactID, Context ctx) {
ContentResolver groupContentResolver = ctx.getContentResolver();
String select = "contact_id=" + contactID +
" AND " + GroupMembership.GROUP_ROW_ID + " = " + groupID +
" AND mimetype='vnd.android.cursor.item/group_membership'";
Cursor contactGroupCursor =
groupContentResolver.query(
Data.CONTENT_URI,
new String[] { GroupMembership.CONTACT_ID, GroupMembership.GROUP_ROW_ID, GroupMembership.IN_VISIBLE_GROUP },
select,
null,
null);
int records = contactGroupCursor.getCount();
try {
while(contactGroupCursor.moveToNext()){
String ContactID = contactGroupCursor.getString(contactGroupCursor.getColumnIndexOrThrow(GroupMembership.CONTACT_ID));
String groupRowId = contactGroupCursor.getString(contactGroupCursor.getColumnIndexOrThrow(GroupMembership.GROUP_ROW_ID));
String InVisiblegroup = contactGroupCursor.getString(contactGroupCursor.getColumnIndexOrThrow(GroupMembership.IN_VISIBLE_GROUP));
Log.d("DEBUG", "groupSourceId in checkGroupMembership: " + groupRowId + " InVisiblegroup = " + InVisiblegroup);
Log.d("DEBUG", "ContactID in checkGroupMembership: " + ContactID);
}
}
finally
{
contactGroupCursor.close();
}
// see if the contact is in this group
if (records > 0) {
return true;
}
else {
return false;
}
}
}
さらに、クエリを変更して、連絡先がメンバーになっているグループを純粋に検索します。
String select = "contact_id=" + contactID;
結果は次のデバッグ出力になります。groupRowIDがグループIDのように見える場合もあれば、連絡先番号または連絡先の名前である場合もあります。テストを呼び出すために自宅の固定電話を使用していることに注意してください。これが表示されています。また、受話器で定義されているグループは10個だけで、出力には11、12、13のIDが出力されます...何かが足りない可能性がありますか?私が渡しているcontact_idがCoworkersグループ(私の電話ではgroup_ID 5)のメンバーであることは確かに知っていますが、これがICSで返されることはありません。両方の携帯電話のコンタクトマネージャーアプリを使用して、HOMEのグループメンバーシップを独自に確認しました。
11-04 11:48:21.980:D / DEBUG(10145):checkGroupMembershipで選択:contact_id = 133 11-04 11:48:21.990:D / DEBUG(10145):checkGroupMembershipのレコード数:13 11-04 11 :48:22.000:D / DEBUG(10145):checkGroupMembershipのgroupRowId:null InVisiblegroup = 1 11-04 11:48:22.000:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.000: D / DEBUG(10145):checkGroupMembershipのgroupRowId:InVisiblegroup = 1 11-04 11:48:22.000:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.000:D / DEBUG(10145) :checkGroupMembershipのgroupRowId:004-414-83326995 InVisiblegroup = 1 11-04 11:48:22.000:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.000:D / DEBUG(10145): checkGroupMembershipのgroupRowId:014-833-26995 InVisiblegroup = 1 11-04 11:48:22.000:D / MYOB(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.030:D / MYOB(10145):checkGroupMembershipのgroupRowId:01483326995 InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのgroupRowId:10 InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11: 48:22.030:D / DEBUG(10145):checkGroupMembershipのgroupRowId:11 InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのgroupRowId:12 InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.030:D / DEBUG(10145) :checkGroupMembershipのgroupRowId:13 InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのgroupRowId:7 InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのgroupRowId:8 InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145) :checkGroupMembershipのContactID:133 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのgroupRowId:9 InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID: 133 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのgroupRowId:HOME InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133D / DEBUG(10145):checkGroupMembershipのgroupRowId:7 InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.030:D / DEBUG(10145 ):checkGroupMembershipのgroupRowId:8 InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのgroupRowId :9 InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのgroupRowId:HOME InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133D / DEBUG(10145):checkGroupMembershipのgroupRowId:7 InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.030:D / DEBUG(10145 ):checkGroupMembershipのgroupRowId:8 InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのgroupRowId :9 InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのgroupRowId:HOME InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133D / DEBUG(10145):checkGroupMembershipのgroupRowId:8 InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.030:D / DEBUG(10145 ):checkGroupMembershipのgroupRowId:9 InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのgroupRowId :HOME InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133D / DEBUG(10145):checkGroupMembershipのgroupRowId:8 InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.030:D / DEBUG(10145 ):checkGroupMembershipのgroupRowId:9 InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのgroupRowId :HOME InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133checkGroupMembershipのgroupRowId:HOME InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133checkGroupMembershipのgroupRowId:HOME InVisiblegroup = 1 11-04 11:48:22.030:D / DEBUG(10145):checkGroupMembershipのContactID:133
PS十分な特権を持っている人は、サイトにタグとして「GroupMembership」を追加してください。