ゼリービーン(API 16+)をターゲティングする場合は、CUSTOM_APP_PACKAGE
を使用するのが最適です。新しいカレンダーイベントを追加して、あなただけ(あなたのパッケージ名とそれぞれイベントを特定するURIを持つ)CUSTOM_APP_PACKAGE
とCUSTOM_APP_URI
フィールドを埋めるために必要がある場合:
ContentValues values = new ContentValues();
values.put(CalendarContract.Events.CALENDAR_ID, 1);
values.put(CalendarContract.Events.TITLE, "Check stackoverflow.com");
values.put(CalendarContract.Events.DTSTART, beginTime.getTimeInMillis());
values.put(CalendarContract.Events.DTEND, endTime.getTimeInMillis());
values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
values.put(CalendarContract.Events.CUSTOM_APP_PACKAGE, getPackageName());
values.put(CalendarContract.Events.CUSTOM_APP_URI, "myAppointment://1");
getContentResolver().insert(CalendarContract.Events.CONTENT_URI, values);
次に、あなた(のAndroidManifest.xmlの一部として指定する必要があります「the documentationが説明しているように)詳細ビューを表示するためにカレンダーアプリから呼び出されるアクティビティ
<activity android:name=".ShowCalendarDetailActivity">
<intent-filter>
<action android:name="android.provider.calendar.action.HANDLE_CUSTOM_EVENT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/event" />
</intent-filter>
</activity>
ShowCalendarDetailActivity
が表示され、ボタンをタップしたときに開始され、そしてアクション"android.provider.calendar.action.HANDLE_CUSTOM_EVENT"
との意向を渡され、そのURIは、予定表アイテムURIになります。
あなたが指定したカスタムURIは、CalendarContract.EXTRA_CUSTOM_APP_URI
のキーで追加されています。
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
String myCustomUri = getIntent().getStringExtra(CalendarContract.EXTRA_CUSTOM_APP_URI);
...
}
あなたはカレンダーアプリは、この意図を構築するコードを見てみたい場合は、EventInfoFragment.java
でEventInfoFragment.updateCustomAppButton()
を参照してください。
あなたは情報を提供してもらえます。カレンダーからアプリに戻るためのオプションを提供した方法の実装について –
こんにちはWoestman!詳細な情報を表示するには、カレンダーからアプリに戻るための実装メカニズムについての情報をお知らせください。 –