获取Android日历活动的唯一ID

时间:2012-06-19 15:49:39

标签: android icalendar android-calendar

我做了很多研究,无法找到如何在Android中访问Calendar事件的真正唯一ID。我查询以下URI

Context.getContentResolver().query(Events.CONTENT_URI, null, null, null, null);

查看我的Galaxy Nexus上生成的Cursor时,没有任何类似于我正在寻找的iCalGUID表单(见下文)。但是,当在HTC One S上执行相同的查询时,我注意到HTC已将iCalGUID作为额外的列字段包含在内,它会返回我正在寻找的ID类型。它看起来像这样:

9ced5c2c-6ed9-481f-9f69-9a064810ac0f

看起来这个iCalGUID字段不是Android SDK标准,所以我无法在其他Android手机上获取此ID。我的问题是,是否有某些方法可以以标准Android的方式获得此类ID?我现在正在瞄准ICS,但希望能够灵活地将其扩展到以前的版本。

如果我应该使用其他类型的ID,那也会很棒。 注意:我正在寻找Events._ID列。我需要我的ID在所有设备上都是唯一的,以及所有类型的Account(Google,Exchange,Hotmail等)

谢谢!

1 个答案:

答案 0 :(得分:2)

字段UID_2445旨在用于此目的,但不幸的是它几乎从未填充过,never with an actual UID

同步器可以访问各种同步字段,在我的测试中始终保存事件原始ID。问题是填充的字段取决于特定的同步器,没有标准。您需要同步器读取权限才能查看这些字段。

它不受支持且我不推荐它,但您可以查看帐户类型(例如com.android.exchange)以找出同步器,然后查看通常填充了UID的字段。在我的测试中,除了Google之外的所有内容都是同步数据2,即同步数据1.