Ale*_*lex 6 events android calendar
有许多关于如何在android中创建新日历事件的示例,但没有关于如何打开和显示事件的示例.到目前为止这是我的代码
public static void startCalendarMimeType(Context context, CalendarItem item){
//all version of android
Intent i = new Intent();
// mimeType will popup the chooser any for any implementing application (e.g. the built in calendar or applications such as "Business calendar"
i.setType("vnd.android.cursor.item/event");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// the time the event should start in millis. This example uses now as the start time and ends in 1 hour
//i.putExtra("beginTime", item.getBegin());
//i.putExtra("endTime", item.getEnd());
i.putExtra("_id", item.getId());
// the action
//i.setAction(Intent.ACTION_PICK);
context.startActivity(i);
}
Run Code Online (Sandbox Code Playgroud)
日历项目包含使用内容解析程序从日历中检索到的信息.当用户点击我的项目时,我希望它打开显示该项目的Android日历.
此时您可以选择要打开的应用程序,如果您选择"显示事件",它会打开日历应用程序,但会获得一个nullpointer异常,而我无法弄清楚我在这里做错了什么.我是第一个尝试这样做的人吗?
任何帮助非常感谢
Cam*_*gny 12
我终于找到了解决方案:
Intent intent = new Intent(Intent.ACTION_VIEW);
//Android 2.2+
intent.setData(Uri.parse("content://com.android.calendar/events/" + String.valueOf(calendarEventID)));
//Android 2.1 and below.
//intent.setData(Uri.parse("content://calendar/events/" + String.valueOf(calendarEventID)));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_SINGLE_TOP
| Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_NO_HISTORY
| Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
context.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
我希望你们中的一些人觉得这很有用.
我还在下面添加了一些其他日历意图:
/**
* Add a calendar event.
*/
private void addCalendarEvent(){
Context context = getContext();
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_SINGLE_TOP
| Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_NO_HISTORY
| Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
context.startActivity(intent);
}
/**
* Edit a calendar event.
*/
private void editCalendarEvent(){
Context context = getContext();
long calendarEventID = .....
intent.setData(Uri.parse("content://com.android.calendar/events/" + String.valueOf(calendarEventID)));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_SINGLE_TOP
| Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_NO_HISTORY
| Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
context.startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
如果有人有任何问题或有更好的方法来完成同样的任务,请告诉我.
有很多关于如何在 android 中创建新日历事件的示例
不应使用这些“示例”,因为 Android 中的日历没有记录且受支持的 API。
但没有关于如何打开和显示事件的信息
您需要联系您尝试集成的任何第三方日历程序的作者,并询问他们如何进行集成。如果您尝试与属于 Android 开源项目一部分的日历应用程序集成,则该应用程序没有记录且受支持的 API。
| 归档时间: |
|
| 查看次数: |
8697 次 |
| 最近记录: |