0

私のアプリは、情報をカレンダーのイベントに関連付ける必要があります。そのためには、イベントごとに永続的なIDが必要です。これにより、イベントの時刻が変更されたときにイベントを追跡したり、イベントが削除されたことを検出したりできます。

さらに、特定のデバイスで一意であるだけでなく、カレンダーにネイティブなIDが必要です。これにより、アプリが別のAndroidデバイスまたは別のプラットフォームで実行される場合に役立ちます。

_IDと_SYNC_IDを見てきました。どちらも特定のデバイスでのみ一意で永続的であるように見えますが、デバイス間ではそうではありません。私が欲しいキーは、それが属するカレンダーからのネイティブイベントキーです。たとえば、Outlookイベントの場合、Outlookのキーが必要だと思います。

そのようなキーはCalendarAPIから入手できますか?そうでない場合は、とにかく私が探しているネイティブキーを取得することはできますか?

ありがとう。

4

1 に答える 1

0

私が知る限り、Event_IDはあなたが得るのと同じくらい永続的です。これはPKであるため、行が削除された後にPKが再利用されない限り、信頼できるはずです。唯一の例外は、ユーザーがカレンダーデータベースをクリアして再同期する場合です。その場合、すべてのPKは新品になると思います。

Event._IDがPKであることを示すCalendarDatabaseHelper.javaのソースコードを次に示します。

   db.execSQL("CREATE TABLE Events (" +
            "_id INTEGER PRIMARY KEY," +
            ACCOUNT_NAME + " TEXT," +
            ACCOUNT_TYPE + " TEXT," +
            "_sync_id TEXT," +
            "_sync_version TEXT," +
            "_sync_time TEXT," +            // UTC
            "_sync_local_id INTEGER," +
            "_sync_dirty INTEGER," +
            "_sync_mark INTEGER," + // To filter out new rows
            "calendar_id INTEGER NOT NULL," +
            "htmlUri TEXT," +
            "title TEXT," +
            "eventLocation TEXT," +
            "description TEXT," +
            "eventStatus INTEGER," +
            "selfAttendeeStatus INTEGER NOT NULL DEFAULT 0," +
            "commentsUri TEXT," +
            "dtstart INTEGER," +               // millis since epoch
            "dtend INTEGER," +                 // millis since epoch
            "eventTimezone TEXT," +         // timezone for event
            "duration TEXT," +
            "allDay INTEGER NOT NULL DEFAULT 0," +
            "visibility INTEGER NOT NULL DEFAULT 0," +
            "transparency INTEGER NOT NULL DEFAULT 0," +
            "hasAlarm INTEGER NOT NULL DEFAULT 0," +
            "hasExtendedProperties INTEGER NOT NULL DEFAULT 0," +
            "rrule TEXT," +
            "rdate TEXT," +
            "exrule TEXT," +
            "exdate TEXT," +
            "originalEvent TEXT," +  // _sync_id of recurring event
            "originalInstanceTime INTEGER," +  // millis since epoch
            "originalAllDay INTEGER," +
            "lastDate INTEGER," +               // millis since epoch
            "hasAttendeeData INTEGER NOT NULL DEFAULT 0," +
            "guestsCanModify INTEGER NOT NULL DEFAULT 0," +
            "guestsCanInviteOthers INTEGER NOT NULL DEFAULT 1," +
            "guestsCanSeeGuests INTEGER NOT NULL DEFAULT 1," +
            "organizer STRING," +
            "deleted INTEGER NOT NULL DEFAULT 0," +
            "dtstart2 INTEGER," + //millis since epoch, allDay events in local timezone
            "dtend2 INTEGER," + //millis since epoch, allDay events in local timezone
            "eventTimezone2 TEXT," + //timezone for event with allDay events in local timezone
            "syncAdapterData TEXT" + //available for use by sync adapters
            ");");
于 2012-12-24T05:25:36.707 に答える