Android日历意图代码说明

时间:2013-03-16 21:25:24

标签: java android cordova android-intent calendar

我想在我的应用程序中点击按钮打开android原生日历应用程序。我在网上搜索过,我找到了以下代码:

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

有人可以向我解释一下这段代码吗?

1 个答案:

答案 0 :(得分:0)

回答有关代码执行操作的问题

Intent intent = new Intent(Intent.ACTION_EDIT);  

创建与Intent操作ACTION_EDIT对应的新Intent。这是一个通用的Intent Action,这意味着仅仅这不足以自动启动权限Activity。这就是我们接下来要做的就是设置Intent的MIME类型。由于我们要启动日历编辑器,因此我们将类型设置为vnd.android.cursor.item/event

intent.setType("vnd.android.cursor.item/event");

这与清单条目相对应。请注意data节点(显示的Jellybean版本清单)。

<intent-filter>
    <action android:name="android.intent.action.EDIT" />
    <action android:name="android.intent.action.INSERT" />
    <category android:name="android.intent.category.DEFAULT" />
    <!-- mime type -->
    <data android:mimeType="vnd.android.cursor.item/event" /> 
</intent-filter>

putExtra()调用允许您指定事件特征,例如事件标题,开始和结束时间等。

然后我们开始活动。结果是这样的:

enter image description here

你去了,你已经打开Android日历应用程序来添加活动!

警告:里程可能会有所不同

但是如果你不想打电话给事件编辑器怎么办?如果您只想打开Android日历应用,则可以使用PackageManager#getLaunchIntentForPackage()(前提是:包名称不会更改,安装了Android日历,并且您可以获得对{{}的引用1}})。

来自活动的示例(使用MainActivity.this突出显示我从活动中启动的事实):

PackageManager