5

アプリからカレンダーを開き、パラメーター「日付」をこのカレンダーに渡します。

そして、このカレンダーには、日付に対応する日付ページが表示されます。

カレンダーのソースコードを調べましたが、使い方がわかりません。

public static void openCalendarApp(Context context)
{   
    Intent intent = context.getPackageManager().getLaunchIntentForPackage("com.android.calendar");
    context.startActivity(intent);
}
4

2 に答える 2

4

カレンダービューを使用してこれを行うことができます...setDate(long date)メソッドを使用して、カレンダーの日付を希望の日付に設定します

このようにカレンダーにイベントを追加することでこれを行うこともできます

カレンダーを作成する意図

Intent calIntent = new Intent(Intent.ACTION_INSERT);
calIntent.setData(CalendarContract.Events.CONTENT_URI);
startActivity(calIntent)

カレンダーの日付と時刻のシード

Intent calIntent = new Intent(Intent.ACTION_INSERT);
calIntent.setType("vnd.android.cursor.item/event");
calIntent.putExtra(Events.TITLE, "Title here");
calIntent.putExtra(Events.EVENT_LOCATION, "Location here");
calIntent.putExtra(Events.DESCRIPTION, "Description here");
GregorianCalendar calDate = new GregorianCalendar(2012, 7, 15);
calIntent.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, true);
calIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME,
     calDate.getTimeInMillis());
calIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME,
     calDate.getTimeInMillis());
startActivity(calIntent);

この例はここで見ることができます

于 2012-12-21T10:38:03.573 に答える
0

Android の古いバージョンと新しいバージョンの両方をサポートする方法は次のとおりです。

@SuppressWarnings("deprecation")
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public static Intent prepareIntentForCalendar(final Context context, final Date date) {
    Intent intent = null;
    if (VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH) {
        // go to date of the calendar app, as shown here:
        // http://developer.android.com/guide/topics/providers/calendar-provider.html#intent-view
        final Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon();
        builder.appendPath("time");
        ContentUris.appendId(builder, date.getTime());
        intent = new Intent(Intent.ACTION_VIEW).setData(builder.build());
        final PackageManager pm = context.getPackageManager();
        final ResolveInfo resolveActivity = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY
                | PackageManager.GET_RESOLVED_FILTER);
        if (resolveActivity == null)
            return null;
    } else {
        intent = new Intent(Intent.ACTION_EDIT);
        intent.setClassName("com.android.calendar", "com.android.calendar.AgendaActivity");
        intent.putExtra("beginTime", date.getTime());
        final PackageManager pm = context.getPackageManager();
        final ResolveInfo resolveActivity = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY
                | PackageManager.GET_RESOLVED_FILTER);
        if (resolveActivity == null)
            intent = null;
    }
    if (intent != null)
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY
                | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
    return intent;
}
于 2014-11-09T10:51:31.043 に答える