web-dev-qa-db-ja.com

起動方法Android Intent(Froyo)を使用したカレンダーアプリケーション

Androidアプリケーションからカレンダーアプリケーションを開きます。オンラインで検索すると、インテントを使用して新しいイベントを作成するだけです。連絡先やギャラリーなどを開くインテントを見つけることができました。

カレンダーを特定の週または日に起動することは可能ですか?できれば、誰かが私を助けてくれませんか。

前もって感謝します。

20
Manu George
Intent intent = new Intent(Intent.ACTION_EDIT);  
intent.setType("vnd.Android.cursor.item/event");
intent.putExtra("title", "Some title");
intent.putExtra("description", "Some description");
intent.putExtra("beginTime", eventStartInMillis);
intent.putExtra("endTime", eventEndInMillis);
startActivity(intent);
20
Muhammad Shahab

カレンダービューを開くには、次の2つの方法があります。

1)特定の日付別2)特定のイベント別

このためには、次の2つの権限を追加する必要があります

  <uses-permission Android:name="Android.permission.READ_CALENDAR" />
  <uses-permission Android:name="Android.permission.WRITE_CALENDAR" />

1)特定の日付:

Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
builder.appendPath("time");
ContentUris.appendId(builder, Calendar.getInstance().getTimeInMillis());
Intent intent = new Intent(Intent.ACTION_VIEW)
    .setData(builder.build());
startActivity(intent);

2)特定のイベント:

long eventID = 200;

Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
Intent intent = new Intent(Intent.ACTION_VIEW).setData(uri);
startActivity(intent);

注:CalendarContractコンテンツプロバイダーがAndroid SDKに追加されました。詳しくは、こちらをご覧ください link

9
DjP

Androidソースコードでカレンダーアプリを確認した後、直接呼び出すことができるのはAgendaActivityのみです。他のユーザーは機能しません。他の投稿者がカーソルを直接操作して読み取り/作成できると指摘しているようにイベント、ただしカレンダーアプリをAgendaView以外のビューに呼び出すことはできません。理由は、開発者が次のアクティビティ定義を使用して、Calアプリのマニフェストでその機能を制限しているためです。

    <activity Android:name="MonthActivity" Android:label="@string/month_view"
        Android:theme="@style/CalendarTheme" />
    <activity Android:name="WeekActivity" Android:label="@string/week_view"
        Android:theme="@style/CalendarTheme" />
    <activity Android:label="@string/day_view" Android:name="DayActivity"     
        Android:theme="@style/CalendarTheme"/>
    <activity Android:name="AgendaActivity" Android:label="@string/agenda_view"
        Android:theme="@Android:style/Theme.Light"
        Android:exported="true" />

AgendaActivityにのみAndroid:exported = "true"があることに注意してください。他のアクティビティを呼び出そうとすると、許可例外が発生します。

ただし、次のコードを使用して、任意の日にAgendaActivityを呼び出すことができます。

    Calendar tempCal = (Calendar) mCalendar.clone();
    tempCal.set(year, month, day); 
    Intent calendarIntent = new Intent() ;
    calendarIntent.putExtra("beginTime", tempCal.getTimeInMillis());
    calendarIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    calendarIntent.setClassName("com.Android.calendar","com.Android.calendar.AgendaActivity");
    startActivity(calendarIntent);
3
securelpb

インテントを使用してカレンダーデータを表示する

カレンダープロバイダーは、VIEWインテントを使用する2つの異なる方法を提供します。

To open the Calendar to a particular date.
To view an event.

マニフェストに権限を追加する

<uses-permission Android:name="Android.permission.READ_CALENDAR" />
<uses-permission Android:name="Android.permission.WRITE_CALENDAR" />

次に、特定の日付までカレンダーを開く方法を示す例を示します。

 // A date-time specified in milliseconds since the Epoch. 
 long startMillis;
 ...
 Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();   
 builder.appendPath("time");
 ContentUris.appendId(builder, startMillis);
 Intent intent = new Intent(Intent.ACTION_VIEW)
     .setData(builder.build());
   startActivity(intent);

表示するイベントを開く方法を示す例を次に示します。

long eventID = 208;
...
Uri uri = ContentUris.withAppendedId(Events.CONTENT_URI, eventID);
Intent intent = new Intent(Intent.ACTION_VIEW)
   .setData(uri);

    startActivity(intent);

Is it possible to launch the Calendar to a specific week or day?

したがって、今では可能ですが、min API 14が必要です。

詳細については http://developer.Android.com/guide/topics/providers/calendar-provider.html#intents をご覧ください。

3
AlexAndro

AgendaActivityは「Agenda」ビューをロードします。

私の経験から、ストックAndroidの日、週、月のアクティビティにディープリンクすることはできませんが、最後に開いたビューをロードする「LaunchActivity」を使用できます。

1
roflharrison

退屈な実験の過程で、私はそれを発見しました:

Intent calendarIntent = new Intent() ;
calendarIntent.setClassName("com.Android.calendar","com.Android.calendar.AgendaActivity");

...カレンダーのアジェンダアクティビティを起動するのに役立ちます。試していませんが、おそらくcom.Android.calendar.DayActivity、.WeekActivity、および.MonthActivityが対応するアクティビティを起動します。

0
Muhammad Shahab