我们可以传递一些URI到Android原生日历应用程序来启动我们的Android应用程序

时间:2014-11-14 09:26:50

标签: android android-intent android-calendar

我们正在从我们的Android应用程序设置一些日历事件,现在我们想要将一些URI或Intent与事件数据一起传递给日历,这样如果用户点击该链接,它将启动我们的应用程序。

它已经在iOS中实现,所以同样的功能客户端也想在android中。你可以查看iOS

1 个答案:

答案 0 :(得分:0)

我找到了针对Android API 16级及以上的以下解决方案

  1. 首先,将清单中的以下意图过滤器添加到您的某个活动中
  2. <intent-filter>
        <action android:name="android.provider.calendar.action.HANDLE_CUSTOM_EVENT" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="vnd.android.cursor.item/event" />
    </intent-filter>
    
    1. 将以下值传递给日历内容解析程序
    2.  ContentResolver cr = context.getContentResolver();
       ContentValues values = new ContentValues();
       TimeZone timeZone = TimeZone.getDefault();
       values.put(CalendarContract.Events.DTSTART, startTimeInMilliSeconds);
       values.put(CalendarContract.Events.DTEND, endTimeInMilliSeconds);
       values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID());
       values.put(CalendarContract.Events.TITLE, title);
       values.put(CalendarContract.Events.DESCRIPTION,desc);
       values.put(CalendarContract.Events.CALENDAR_ID, 3);
       values.put(CalendarContract.Events.CUSTOM_APP_PACKAGE, "com.my.pkg");//your app package 
       values.put(CalendarContract.Events.CUSTOM_APP_URI,"https://www.my.pkg.com/eventID/");
      

      创建日历活动后,它会在日历活动的详细信息中显示您的应用图标和应用名称。

      已知问题:
      此解决方案适用于所有谷歌设备(Nexus设备)或任何具有android os而没有任何公司定制(Moto g等)的设备