在联系人上显示带同步适配器的状态图标

时间:2012-04-11 14:15:27

标签: android android-contacts android-syncadapter user-presence

我尝试使用状态图标并显示我的自定义用户的状态。 无论我做了什么,我都遇到了无法插入错误或者我的联系人没有显示状态。

   values.put(StatusUpdates.DATA_ID, profileId);
   values.put(StatusUpdates.STATUS, user.getStatus());
   values.put(StatusUpdates.PROTOCOL, Im.PROTOCOL_CUSTOM);
   values.put(StatusUpdates.CUSTOM_PROTOCOL, CUSTOM_IM_PROTOCOL);
   values.put(StatusUpdates.IM_ACCOUNT, username);
   values.put(StatusUpdates.IM_HANDLE, user.getuserID());
   values.put(StatusUpdates.STATUS_RES_PACKAGE, context.getPackageName());
   values.put(StatusUpdates.STATUS_ICON, R.drawable.tray_icon);
   values.put(StatusUpdates.STATUS_LABEL, R.string.app_name);
   values.put(StatusUpdates.PRESENCE, StatusUpdates.AVAILABLE);

有没有人有解决方案?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

这一行看起来很可疑:

values.put(StatusUpdates.DATA_ID, profileId);

什么是profileId?如果指定,则StatusUpdates.DATA_ID应该是“data”表中IM行的_ID。在插入状态之前,您需要拥有该行。

通常的做法是在“数据”表中有一行,然后提供IM_PROTOCOL和IM_HANDLE(与Im.DATA匹配),但在状态更新插入中保留未指定DATA_ID。 ContactsProvider会自动将状态与数据行匹配,并为您保存查询查询。

另外,如果可以,请确保使用bulkInsert作为状态。这会加快速度。