如何禁用Android日历(app)的选择性字段?

时间:2015-07-09 01:35:00

标签: android android-intent android-calendar

我正在使用以下代码(从Android website复制)将事件添加到日历中。它要求我选择一个已安装的日历应用程序进行添加。它可以禁用所选日历应用程序中的选择性字段吗?例如,我希望用户不要修改事件的事件标题,开始和结束时间。

Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 0, 19, 7, 30);
Calendar endTime = Calendar.getInstance();
endTime.set(2012, 0, 19, 8, 30);
Intent intent = new Intent(Intent.ACTION_INSERT)
        .setData(Events.CONTENT_URI)
        .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis())
        .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis())
        .putExtra(Events.TITLE, "Yoga")
        .putExtra(Events.DESCRIPTION, "Group class")
        .putExtra(Events.EVENT_LOCATION, "The gym")
        .putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY)
        .putExtra(Intent.EXTRA_EMAIL, "rowan@example.com,trevor@example.com");
startActivity(intent);

1 个答案:

答案 0 :(得分:1)

您不能禁用字段或控制您自己以外的其他应用。

使用Intent启动另一个Activity有点像在邮件中发送内容。您无法告诉Activity如何处理您发送的内容。你所能做的只是等待回复...

但是,如果您想获得更高级的功能,可以在自己的应用中提供日历用户界面,然后通过CalendarProvider

直接更新日历数据

见这里:http://developer.android.com/guide/topics/providers/calendar-provider.html#add-event

long calID = 3;
long startMillis = 0; 
long endMillis = 0;     
Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 9, 14, 7, 30);
startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2012, 9, 14, 8, 45);
endMillis = endTime.getTimeInMillis();
...

ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
values.put(Events.DTSTART, startMillis);
values.put(Events.DTEND, endMillis);
values.put(Events.TITLE, "Jazzercise");
values.put(Events.DESCRIPTION, "Group workout");
values.put(Events.CALENDAR_ID, calID);
values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");
Uri uri = cr.insert(Events.CONTENT_URI, values);

// get the event ID that is the last element in the Uri
long eventID = Long.parseLong(uri.getLastPathSegment());
// 
// ... do something with event ID
//
//