HarmonyOS添加日历日程,service中设置好uri在系统日历中不体现

简述:

        这两天在做关于日历的一些东西,添加日程等的东西官网有直接的代码,过程倒是挺顺利的,但是在addEvent的时候,service中的uri填写了,按照官网给出的例子直接可以在系统日历上出现点击按钮,点击后直接跳转进入对应的app,但是都配置好了还是没有出现跳转按钮,搜了很久,最后求助了官方的同学,给出了指引文档。

关于如何添加日历直接按照官方文档走即可(@ohos.calendarManager (日程管理能力)-ArkTS API-Calendar Kit(日历服务)-应用服务 - 华为HarmonyOS开发者

解决方案:

这个方案其实已经在论坛有同学回复过了,添加日历-华为开发者问答 | 华为开发者联盟,以下是具体一点的图示

1.1  选择 智慧服务>HarmonyOS服务开发平台,进入开发者网站,登录企业账户,确保你的账户已经让使用企业主账号或团队成员添加了HAG的权限(!!!)HUAWEI Developer

1.2  选择 智慧服务>其他服务记录,点击创建服务

1.3  进入之后选择自定义,服务分类选择 日历,填写完成后创建

1.4  填写基本信息

1.5  保存后选择服务呈现信息

1.6  配置中新增用户意图

1.7  输入app包名和名称

1.8  再新增实现中增加 配置

1.9  选择HAP LINK

1.10  APP包名和名称填写和前面步骤填写必须一致,配置跳转链接

1.11  在发布中选择上架

1.12  因为日历是通过deeplink形式拉起的,所以需要将1.10的跳转链接一并配置进入项目的module.json5文件中

这样就是一整个流程结束了,之后addEvent中service的uri就要使用你配置好的这个链接,这个时候其实你已经是完成了,但是要等你申请的这个服务上线才能使用。

注:申请的这个服务和链接必须上架(未上架或者审核未通过都无法使用),上架之后1小时左右,按官方同学给的信息,还需要重置手机系统一次,之后才可以正常使用

在Android中,为了向系统日历添加日程事件,你需要使用`CalendarContract`和`AlarmManager`。以下是一个基本的过程: 1. **权限检查**:确保你的应用已获得所需的权限,如`READ_CALENDAR`和`WRITE_CALENDAR`,在`AndroidManifest.xml`中添加: ```xml <uses-permission android:name="android.permission.READ_CALENDAR" /> <uses-permission android:name="android.permission.WRITE_CALENDAR" /> ``` 2. **获取日历访问助手**: ```java ContentResolver cr = getContentResolver(); CalendarContract.Calendarendars calendars = CalendarContract.Calendarendars.CONTENT_URI; Cursor cursor = cr.query(calendars, null, null, null, null); if (cursor != null && cursor.moveToFirst()) { int idIndex = cursor.getColumnIndex(CalendarContract.Calendarendars._ID); String primaryCalendarsId = cursor.getString(idIndex); cursor.close(); } ``` 3. **创建日程事件**: ```java Calendar calendar = Calendar.getInstance(); ContentValues values = new ContentValues(); values.put(CalendarContract.CalendarEvents.CALENDAR_ID, primaryCalendarsId); values.put(CalendarContract.CalendarEvents.TITLE, "事件标题"); values.put(CalendarContract.CalendarEvents.DESCRIPTION, "事件描述"); values.put(CalendarContract.CalendarEvents.EVENT_TIMEZONE, "UTC"); // 设置时区 values.put(CalendarContract.CalendarEvents.DTSTART, calendar.getTimeInMillis()); // 开始时间 if (hasEndTime) { values.put(CalendarContract.CalendarEvents.DTEND, calendarEnd.getTimeInMillis()); // 结束时间 } else { values.put(CalendarContract.CalendarEvents.DURATION, -1); // 持续一天的活动 } Uri eventUri = cr.insert(CalendarContract.CalendarEvents.CONTENT_URI, values); ``` 4. **设置提醒(如果需要)**: 使用`AlarmManager`设置事件提醒,这里仅示例如何设置一个延迟1小时的提醒: ```java Intent intent = new Intent(this, AlarmReceiver.class); PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0); long triggerAtTime = calendar.getTimeInMillis() + (60 * 1000 * 60); // 1小时后触发 AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP, triggerAtTime, alarmIntent); ``` 5. **编写接收器(AlarmReceiver)**:处理闹钟响铃时的操作,比如更新通知或打开应用内的事件详情。 务必注意,用户可能会对事件进行编辑或删除,所以建议定期同步数据以避免冲突。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值