5

私はかなりの調査を行いましたが、Android でカレンダー イベントの真に一意の 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 を取得できません。私の質問は、このタイプの ID を標準の Android の方法で取得できる方法はありますか? 私は現在 ICS をターゲットにしていますが、将来的にこれを以前のバージョンに拡張できるように柔軟に対応したいと考えています。

私が使用する必要がある他のタイプの ID があれば、それも素晴らしいでしょう。:列を探しているわけではありません。Events._IDID は、すべてのデバイスとすべてのタイプAccount(Google、Exchange、Hotmail など)で一意である必要があります。

ありがとうございました!

4

1 に答える 1

2

フィールドUID_2445はこの目的のために意図されていましたが、残念ながら、実際の UIDが入力されることはほとんどありません。

シンクロナイザーは、私のテストでは常にイベントの元の ID を保持するさまざまな同期フィールドにアクセスできます。問題は、入力されるフィールドが特定のシンクロナイザーに依存することです。標準はありません。これらのフィールドを表示するには、シンクロナイザーの読み取りアクセス許可が必要です。

サポートされておらず、お勧めしませんが、アカウントの種類 (com.android.exchange など) を調べてシンクロナイザーを特定し、通常は UID が入力されているフィールドを調べることができます。私のテストでは、同期データ 1 である Google を除くすべての同期データ 2 です。

于 2015-06-17T13:54:48.033 に答える