2

我有一个发出日历事件的网络服务:http: //calevent.herokuapp.com。在 iOS 上,该 URL 将打开一个日历弹出窗口,其中包含事件详细信息和一个允许用户添加到她的日历的按钮。在我的主要 Android 设备(运行 Android 4.1 的 Galaxy SIII)上,它会触发正常的文件下载。所需的行为类似于 iOS。

该服务设置了两个重要的标头:

  • Content-Type: text/calendar; charset=utf-8
  • Content-Disposition: inline; filename="event.ics"

我已经解码了我设备的日历应用程序“S Planner”的清单。它没有BROWSABLE为数据定义任何意图过滤器text/calendar。它确实定义了一些我不确定是否可以(ab)使用的谷歌日历特定的东西。

这是来自香草日历应用程序

<activity android:name="GoogleCalendarUriIntentFilter" android:label="@string/app_label"
   android:theme="@android:style/Theme.NoDisplay"
   android:configChanges="orientation|keyboardHidden">

   <intent-filter
      android:priority="50">
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="http" android:host="www.google.com" android:pathPrefix="/calendar/event" />
      <data android:scheme="https" android:host="www.google.com" android:pathPrefix="/calendar/event" />
      <data android:scheme="http" android:host="www.google.com" android:pathPattern="/calendar/hosted/.*/event" />
      <data android:scheme="https" android:host="www.google.com" android:pathPattern="/calendar/hosted/.*/event" />
   </intent-filter>
</activity>

这是一个死胡同吗?还有其他不会影响用户体验的解决方案吗?

4

1 回答 1

0

问题:

据我所知,Google提供Calendar的应用程序是开源的,设备制造商Samsung,Htc,Sony习惯于modify or publish their own application在构建各自的Android source代码时替换默认的应用程序。

所以有两种可能性:要么Google没有在默认应用程序中添加此类功能,要么已Samsung通过修改源删除了该功能。

简而言之,完成这项任务是困难的,或者可能是不可能的。

当我遇到这个问题时,我应用了以下解决方案。

解决方案:

您可以在应用程序中显示类似用户界面的日历并在其中表示事件。

要创建这样的界面,您可以根据需要使用 3rd 方库。

首先以event.ics编程方式读取该文件并提取其数据。然后通过使用像Caldroid这样的 3rd 方库,您可以在其中表示特定日期的事件。

我希望它会有所帮助!

于 2013-10-15T14:31:00.583 回答