我正在 Android 上开发一个 IM 应用程序。目的是具有多帐户和协议的兼容性。我正在寻找一种在 Android 上获得最佳联系人状态的方法。我有一个支持的帐户类型列表。我有一个函数需要很长时间(contact_id
),并且必须返回最好的Account
+最好的联系方式(例如somebody@jabber.org
)。
我已经查看了文档,并且我已经知道 SQL。但是在那一点上文档有点混乱,我不知道如何获得向联系人发送消息的最佳方式。这是我正在尝试做的一些代码:
public static Account best(Context context, long contact)
{
final ContentResolver resolver = context.getContentResolver();
final Cursor rawContacts = resolver.query(RawContacts.CONTENT_URI,
new String[]{RawContacts._ID},
RawContacts.CONTACT_ID + "=? AND " + registeredProtocolsSelection(),
new String[]{String.valueOf(contact)}, null);
while(rawContacts.moveToNext())
{
final long rawContactId = rawContacts.getLong(0);
Uri rawContactUri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId);
Uri entityUri = Uri.withAppendedPath(rawContactUri, Entity.CONTENT_DIRECTORY);
Cursor rawContact = resolver.query(entityUri,
new String[]{RawContacts.SOURCE_ID, Entity.DATA_ID, Entity.MIMETYPE, Entity.DATA1},
null, null, null);
}
return null;
}
我可以选择对我的应用程序重要的所有 RawContact,但我不知道如何加入,也无法获得数据库的清晰架构。我不知道如何从那里访问 StatusUpdate。目标就像ORDER BY presence
。
有没有简单的方法可以做到这一点?有没有办法通过 ORM 之类的东西像普通对象一样操作联系人?或者我们是否有一种机制可以在 Android 上轻松创建和管理我们自己的 IM 协议?