【问题标题】:Showing presence icon with sync adapter on contacts在联系人上显示带有同步适配器的在线状态图标
【发布时间】:2012-04-23 20:46:14
【问题描述】:

我尝试使用状态图标并为我的自定义用户显示状态。 不管我做了什么,我都遇到了插入失败的错误,或者我的联系人上没有显示存在。

   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);

有没有人有解决方案?

【问题讨论】:

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


    【解决方案1】:
    【解决方案2】:

    这条线看起来很可疑:

    values.put(StatusUpdates.DATA_ID, profileId);

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

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

    此外,如果可以,请确保使用 bulkInsert 获取状态。这将大大加快速度。

    【讨论】:

    • 谢谢你,我会试试的。 profileId 是我在原始联系人表中寻找的原始联系人 ID。用户之前被插入,现在我有一个我正在使用的原始联系人 ID。显然做得不对……
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 2013-05-27
    • 2021-04-27
    • 2012-01-10
    • 1970-01-01
    • 2023-01-15
    相关资源
    最近更新 更多