1

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

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

有没有人有解决方案?

4

2 回答 2

1

有关包括对 2.2、权限等的特殊处理的指南,另请参阅:

http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1

http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-2

他们的来源是可用的:

https://github.com/c99koder/lastfm-android/

于 2012-05-13T07:39:09.597 回答
0

这条线看起来很可疑:

values.put(StatusUpdates.DATA_ID, profileId);

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

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

此外,如果可以,请确保使用 bulkInsert 获取状态。这会加快很多事情。

于 2012-04-16T15:12:47.347 回答