如何让Google Calendar笔记中的Deep Link在Android端可点击?
问题:Android端Google Calendar笔记无法识别自定义Scheme的Deep Link
- 场景:将格式为
appname://timer?2000sec&ringtone?jinglebells的Deep Link存入Google Calendar笔记字段 - iOS表现:正常识别为可点击红色链接,能唤起对应应用
- Android表现:仅显示纯文本,无法识别为可点击链接
- 已确认项:AndroidManifest.xml配置正确(Chrome打开含该链接的HTML页面可正常唤起应用),使用Flutter框架及
add_2_calendar包
附当前AndroidManifest.xml相关配置:
<!-- Deep linking, this is under the mainActivity <activity> tag --> <meta-data android:name="flutter_deeplinking_enabled" android:value="true" /> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="rheinbahnnextgen" /> </intent-filter>
可行解决思路
1. 修正Deep Link的参数格式
原链接的参数写法不符合标准URL规范(&ringtone?jinglebells应为&ringtone=jinglebells),Google Calendar Android版对非标准格式的链接识别率较低,调整为标准格式后再测试:
rheinbahnnextgen://timer?sec=2000&ringtone=jinglebells
2. 用HTML锚标签包裹链接
如果add_2_calendar支持向笔记传入HTML内容,尝试用锚标签包裹链接:
<a href="rheinbahnnextgen://timer?sec=2000&ringtone=jinglebells">启动计时器</a>
若当前包不支持HTML笔记,可考虑修改add_2_calendar的源码,或直接调用Calendar原生API创建事件,传入带HTML格式的笔记内容。
3. 切换为Android App Links
自定义Scheme在系统应用中的识别优先级低于App Links,可配合已配置的autoVerify="true",补充App Links配置:
- 在你的域名下放置
assetlinks.json验证文件 - 在Manifest的intent-filter中添加HTTPS协议的data节点:
<data android:scheme="https" android:host="你的域名" />
- 将链接改为
https://你的域名/timer?sec=2000&ringtone=jinglebells,这类链接更易被Google Calendar识别。
4. 检查Calendar版本与设置
- 确保Google Calendar是最新版本,旧版本对自定义Scheme的支持存在局限
- 检查Calendar应用设置中的「链接预览」功能是否开启(通常在通用/显示设置栏)
内容的提问来源于stack exchange,提问作者Maritn Ge
相关产品推荐
相关产品推荐

