gpt4 book ai didi

android - 使用 Intent 在月 View 中显示日历

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:08 25 4
gpt4 key购买 nike

我正在开发一个小部件,除其他外,它会根据某些用户操作使用 intent 打开常规的 android 日历。我目前正在研究 ICS,所以不太关心旧版本的 API。我可以使用以下代码打开日 View :

Intent intent2 = new Intent();
intent2.setComponent(new ComponentName("com.android.calendar", "com.android.calendar.AllInOneActivity"));
intent2.setAction("android.intent.action.MAIN");
intent2.addCategory("android.intent.category.LAUNCHER");
intent2.setFlags(0x10200000);
intent2.putExtra("beginTime", dateStartMillis);
intent2.putExtra("VIEW", "DAY");
context.startActivit(intent2);

但是我似乎找不到在月 View 中打开它的方法。根据GrepCode对于 AllInOneActivity,它在其 onCreate 方法中调用 Utils.getViewTypeFromIntentAndSharedPref(this); 来确定要显示的 View 。这是该方法:

 public static int getViewTypeFromIntentAndSharedPref(Activity activity) {
Intent intent = activity.getIntent();
Bundle extras = intent.getExtras();
SharedPreferences prefs = GeneralPreferences.getSharedPreferences(activity);

if (TextUtils.equals(intent.getAction(), Intent.ACTION_EDIT)) {
return ViewType.EDIT;
}
if (extras != null) {
if (extras.getBoolean(INTENT_KEY_DETAIL_VIEW, false)) {
// This is the "detail" view which is either agenda or day view
return prefs.getInt(GeneralPreferences.KEY_DETAILED_VIEW,
GeneralPreferences.DEFAULT_DETAILED_VIEW);
} else if (INTENT_VALUE_VIEW_TYPE_DAY.equals(extras.getString(INTENT_KEY_VIEW_TYPE))) {
// Not sure who uses this. This logic came from LaunchActivity
return ViewType.DAY;
}
}

// Default to the last view
return prefs.getInt(
GeneralPreferences.KEY_START_VIEW, GeneralPreferences.DEFAULT_START_VIEW);
}

我没有在这个方法(或其他任何地方)中看到将 View 设置为 MonthView 的方法。有什么我可以使用的技巧,还是我应该接受这是不可能的?

最佳答案

从这里开始: Android Developer Calendar Provider Docs

Calender Provider 提供了两种不同的方式来使用 VIEW Intent:

打开日历到特定日期。查看事件。下面是一个示例,说明如何打开特定日期的日历:

// 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);

这也意味着,没有正式的方法来确定显示哪个 View 。您的代码仅适用于 ICS 中的特定日历应用程序,很可能不适用于大多数其他应用程序。

关于android - 使用 Intent 在月 View 中显示日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16422878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com