Java/Kotlin调用Google Calendar API创建Meet的ConferenceData问题
问题原因
找不到ConferenceData对象的核心原因是当前引入的Google Calendar API客户端依赖版本过低,或是使用了裁剪过的精简依赖包,旧版本/精简包未包含会议数据相关的模型类。
解决步骤
1. 更新Gradle依赖
打开app模块下的build.gradle文件,将原有的Google Calendar依赖替换为包含完整模型类的正式版本,同步Gradle:
dependencies { // 替换原有低版本Calendar依赖,该版本已内置ConferenceData相关类 implementation 'com.google.apis:google-api-services-calendar:v3-rev20240321-2.0.0' }
如果同步后依然无法识别类,执行Android Studio菜单栏 File -> Invalidate Caches... 勾选清除缓存选项后重启IDE即可。
2. 代码中配置ConferenceData生成Google Meet
注意不能手动拼接Google Meet链接,需要通过CreateConferenceRequest参数让Calendar服务端自动生成有效链接,且插入事件时必须指定conferenceDataVersion=1,否则服务端会忽略会议配置。
基于你现有代码,补充会议配置的完整实现如下:
// 依赖正常后可导入以下所需类 import com.google.api.services.calendar.model.ConferenceData import com.google.api.services.calendar.model.ConferenceSolutionKey import com.google.api.services.calendar.model.CreateConferenceRequest import java.util.UUID // --- 接你原有代码,在event.extendedProperties.private = map 之后添加 --- // 指定会议类型为Google Meet val meetSolutionKey = ConferenceSolutionKey().setType("hangoutsMeet") // 构造会议创建请求,requestId用随机UUID保证全局唯一 val meetCreateRequest = CreateConferenceRequest() .setRequestId(UUID.randomUUID().toString()) .setConferenceSolutionKey(meetSolutionKey) // 将会议配置绑定到日程对象 event.conferenceData = ConferenceData().setCreateRequest(meetCreateRequest) // 调用API插入日程时必须加setConferenceDataVersion(1),否则不会生成会议 val resultEvent = calendar.events() .insert("primary", event) .setConferenceDataVersion(1) .execute() // 日程创建成功后即可获取到生成的有效Google Meet链接 val meetUrl = resultEvent.conferenceData.entryPoints[0].uri
注意事项
- 每次创建新会议时
requestId必须保证唯一,重复使用相同ID会返回历史同ID对应的会议,不会生成新会议 - 不要尝试手动构造
entryPoints里的Meet链接,自行拼接的链接无效,必须由服务端生成 - 如果需要给会议添加参会人权限,正常配置日程的
attendees字段即可,参会人会自动收到带Meet链接的日程邀请 - 若使用OAuth授权,需要确保申请了
https://www.googleapis.com/auth/calendar读写权限,仅申请只读权限无法创建带会议的日程
内容的提问来源于stack exchange,提问作者madhall
相关产品推荐
相关产品推荐

