我尝试使用状态图标并显示我的自定义用户的状态。 无论我做了什么,我都遇到了无法插入错误或者我的联系人没有显示状态。
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);
有没有人有解决方案?
答案 0 :(得分: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
他们的来源可用:
答案 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作为状态。这会加快速度。