> 文档中心 > 【Java UI】HarmonyOS添加日历事件

【Java UI】HarmonyOS添加日历事件


 参考资料

CalendarDataHelper

Events

Reminders

api讲解

添加权限

在config.json添加权限代码如下

 "reqPermissions": [      { "name": "ohos.permission.READ_CALENDAR"      },      { "name": "ohos.permission.WRITE_CALENDAR"      },      { "name": "ohos.permission.PUBLISH_AGENT_REMINDER"      }    ]

在java代码动态注册权限

public class MainAbility extends Ability {    @Override    public void onStart(Intent intent) { String[] permissions = {  "ohos.permission.READ_CALENDAR",  "ohos.permission.WRITE_CALENDAR",  "ohos.permission.PUBLISH_AGENT_REMINDER" }; requestPermissionsFromUser(permissions, 0); super.onStart(intent); super.setMainRoute(MainAbilitySlice.class.getName());    }}

添加日历事件

    public void insert(Context context) { try {     EventsHelper = CalendarDataHelper.creator(context, Events.class);     //新增日历事件     ValuesBucket valuesBucket = new ValuesBucket();     valuesBucket.putInteger(EventsColumns.ACC_ID, 1);     valuesBucket.putNull(EventsColumns.DURATION);     valuesBucket.putString(EventsColumns.START_TIMEZONE, TimeZone.getDefault().getID());     valuesBucket.putString(EventsColumns.EVENT_POSITION, "上海");     valuesBucket.putString(EventsColumns.TITLE, "标题");     valuesBucket.putString(EventsColumns.DESCRIPTION, "描述");     valuesBucket.putLong(EventsColumns.EVENT_START_TIME, System.currentTimeMillis());     valuesBucket.putLong(EventsColumns.EVENT_END_TIME, System.currentTimeMillis()+8*1000*60*60);  boolean isok=   EventsHelper.insert(valuesBucket);  System.err.println(isok?"####===>添加成功":"#####===>>添加失败"); } catch (DataAbilityRemoteException e) {     System.out.println(e.toString());     e.printStackTrace(); }    }

修改日历事件

  String PREDICTOR_TEMPLATE = "(%s)"; String sq1 = String.format(  Locale.ENGLISH,  PREDICTOR_TEMPLATE,  "calendar_id =" + 1); DataAbilityPredicates predicates = new DataAbilityPredicates(sq1); EventsHelper = CalendarDataHelper.creator(context, Events.class); //新增日历事件 ValuesBucket valuesBucket = new ValuesBucket(); valuesBucket.putInteger(EventsColumns.ACC_ID, 1); valuesBucket.putString(EventsColumns.TITLE, "修改标题"); //修改日历事件 boolean isupdate = EventsHelper.update(valuesBucket, predicates); if (isupdate) {     System.err.println("#######====>修改成功"); } else {     System.err.println("#######====>修改失败"); }

查询日历事件

  String PREDICTOR_TEMPLATE = "(%s)"; String sq1 = String.format(  Locale.ENGLISH,  PREDICTOR_TEMPLATE,  "calendar_id =" + 1); DataAbilityPredicates predicates = new DataAbilityPredicates(sq1); EventsHelper = CalendarDataHelper.creator(context, Events.class);//查询日历事件 String[] eventColumns = new String[]{  Events.ID,  EventsColumns.TITLE,  EventsColumns.DESCRIPTION,  EventsColumns.EVENT_START_TIME,  EventsColumns.EVENT_END_TIME, }; CalendarCollection calendarCollection = null; calendarCollection = EventsHelper.query(predicates, eventColumns);    int id=-1; while (calendarCollection != null && calendarCollection.hasNext()) {     Events resultEntity = (Events) calendarCollection.next()      .filter(entity -> entity instanceof Events)      .orElse(null);     System.err.println("####====>>"+resultEntity.getTitle() + "=" + resultEntity.getDescription()+"="+resultEntity.getId());  id=resultEntity.getId();//     Optional.ofNullable(calendarCollection).ifPresent(CalendarCollection::close);

删除日历事件

  EventsHelper = CalendarDataHelper.creator(ability, Events.class); DataAbilityPredicates predicates = new DataAbilityPredicates("title like '%修改标题%'"); int flag = EventsHelper.delete(predicates); System.err.println(flag > 0 ? "####===》删除成功" : "####===》删除失败");

添加日历提醒

 CalendarDataHelper      RemindersHelper = CalendarDataHelper.creator(context, Reminders.class); ValuesBucket reminderBucket = new ValuesBucket(); reminderBucket.putInteger(RemindersColumns.EVENT_ID, id); reminderBucket.putInteger(RemindersColumns.REMIND_TYPE, RemindersColumns.TYPE_ALARM); reminderBucket.putInteger(RemindersColumns.REMIND_MINUTES, 1); reminderBucket.putInteger("method",1); boolean   isok= false; try {     isok = RemindersHelper.insert(reminderBucket); } catch (DataAbilityRemoteException e) {     e.printStackTrace(); } System.err.println(isok?"###===>设置成功"+id:"#####====>>设置失败"+id);

运行效果

全部代码

xml布局

    

java代码

import ohos.aafwk.ability.AbilitySlice;import ohos.aafwk.ability.DataAbilityRemoteException;import ohos.aafwk.content.Intent;import ohos.agp.components.Component;import ohos.data.dataability.DataAbilityPredicates;import ohos.data.rdb.ValuesBucket;import ohos.sysappcomponents.calendar.CalendarCollection;import ohos.sysappcomponents.calendar.CalendarDataHelper;import ohos.sysappcomponents.calendar.column.EventsColumns;import ohos.sysappcomponents.calendar.column.RemindersColumns;import ohos.sysappcomponents.calendar.entity.Events;import ohos.sysappcomponents.calendar.entity.Reminders;import java.util.Locale;import java.util.TimeZone;public class MainAbilitySlice extends AbilitySlice {    private CalendarDataHelper  EventsHelper = CalendarDataHelper.creator(this, Events.class);    private int id;    CalendarDataHelper      RemindersHelper = CalendarDataHelper.creator(this, Reminders.class);    @Override    public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_main); findComponentById(ResourceTable.Id_insertEvent).setClickedListener(new Component.ClickedListener() {     @Override     public void onClick(Component component) {  try {      //新增日历事件      ValuesBucket valuesBucket = new ValuesBucket();      valuesBucket.putInteger(EventsColumns.ACC_ID, 1);      valuesBucket.putNull(EventsColumns.DURATION);      valuesBucket.putString(EventsColumns.START_TIMEZONE, TimeZone.getDefault().getID());      valuesBucket.putString(EventsColumns.EVENT_POSITION, "上海");      valuesBucket.putString(EventsColumns.TITLE, "标题");      valuesBucket.putString(EventsColumns.DESCRIPTION, "描述");      valuesBucket.putLong(EventsColumns.EVENT_START_TIME, System.currentTimeMillis());      valuesBucket.putLong(EventsColumns.EVENT_END_TIME, System.currentTimeMillis()+8*1000*60*60);      boolean isok=   EventsHelper.insert(valuesBucket);      System.err.println(isok?"####===>添加成功":"#####===>>添加失败");  } catch (DataAbilityRemoteException e) {      System.out.println(e.toString());      e.printStackTrace();  }     } }); findComponentById(ResourceTable.Id_UpdateEvent).setClickedListener(new Component.ClickedListener() {     @Override     public void onClick(Component component) {  try {      String PREDICTOR_TEMPLATE = "(%s)";      String sq1 = String.format(Locale.ENGLISH,PREDICTOR_TEMPLATE,"calendar_id =" + 1);      DataAbilityPredicates predicates = new DataAbilityPredicates(sq1);      //新增日历事件      ValuesBucket valuesBucket = new ValuesBucket();      valuesBucket.putInteger(EventsColumns.ACC_ID, 1);      valuesBucket.putString(EventsColumns.TITLE, "修改标题");      //修改日历事件      boolean isupdate = EventsHelper.update(valuesBucket, predicates);      if (isupdate) {   System.err.println("#######====>修改成功");      } else {   System.err.println("#######====>修改失败");      }  }catch (Exception e){      e.printStackTrace();      System.err.println("######====>"+e.getMessage());  }     } }); findComponentById(ResourceTable.Id_selectEvent).setClickedListener(new Component.ClickedListener() {     @Override     public void onClick(Component component) {  try {      String PREDICTOR_TEMPLATE = "(%s)";      String sq1 = String.format(Locale.ENGLISH,PREDICTOR_TEMPLATE,"calendar_id =" + 1);      DataAbilityPredicates predicates = new DataAbilityPredicates(sq1);      //新增日历事件//查询日历事件      String[] eventColumns = new String[]{Events.ID,EventsColumns.TITLE,EventsColumns.DESCRIPTION,EventsColumns.EVENT_START_TIME,EventsColumns.EVENT_END_TIME,      };      CalendarCollection calendarCollection = null;      calendarCollection = EventsHelper.query(predicates, eventColumns);      while (calendarCollection != null && calendarCollection.hasNext()) {   Events resultEntity = (Events) calendarCollection.next()    .filter(entity -> entity instanceof Events)    .orElse(null);   System.err.println("####====>>"+resultEntity.getTitle() + "=" + resultEntity.getDescription()+"="+resultEntity.getId());   id=resultEntity.getId();//     Optional.ofNullable(calendarCollection).ifPresent(CalendarCollection::close);      }  } catch (DataAbilityRemoteException e) {      e.printStackTrace();  }     } }); findComponentById(ResourceTable.Id_deleteEvent).setClickedListener(new Component.ClickedListener() {     @Override     public void onClick(Component component) {  try {      DataAbilityPredicates predicates = new DataAbilityPredicates("title like '%修改标题%'");      int flag = EventsHelper.delete(predicates);      System.err.println(flag > 0 ? "####===》删除成功" : "####===》删除失败");  } catch (Exception e) {      e.printStackTrace();  }     } }); findComponentById(ResourceTable.Id_setReminders).setClickedListener(new Component.ClickedListener() {     @Override     public void onClick(Component component) {  ValuesBucket reminderBucket = new ValuesBucket();  reminderBucket.putInteger(RemindersColumns.EVENT_ID, id);  reminderBucket.putInteger(RemindersColumns.REMIND_TYPE, RemindersColumns.TYPE_ALARM);  reminderBucket.putInteger(RemindersColumns.REMIND_MINUTES, 1);  reminderBucket.putInteger("method",1);  boolean   isok= false;  try {      isok = RemindersHelper.insert(reminderBucket);  } catch (DataAbilityRemoteException e) {      e.printStackTrace();  }  System.err.println(isok?"###===>设置成功"+id:"#####====>>设置失败"+id);     } });    }}

运行效果

b2580c004705f0d24e5f5e74e0427082_1455x995.gif%40900-0-90-f.gif

 欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh