2014-09-29 25 views
0

我希望能够显示我自己的日历事件,给定Android意图和日期显示。我相信,意图这样做看起来是这样的:如何捕捉Android View日历事件的意图?

Intent { act=android.intent.action.VIEW act=content://com.android.calendar/time/1409565898789 } 

而且我已经设置了活动来处理这个意图,在我的AndroidManifest.xml这样规定的意图过滤器:

<activity 
    android:name=".MyActivity" 
    android:label="@string/title_activity_custom" 
    android:launchMode="singleTask"> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW"/> 
     <category android:name="android.intent.category.DEFAULT"/> 
    </intent-filter> 
    <!-- etc. --> 
</activity> 

在为了测试这个代码,我打开我的应用到我的测试设备和使用该命令发出意图:

adb shell am start -a android.intent.action.VIEW -d content://com.android.calendar/time/1410665898789 

但是,当我做到这一点,股票的Android日历启动。我从来没有机会在另一份申请中看到这一次。我想也许Android系统甚至不认可我的Activity作为接受这个Intent的候选人。

我不确定我做错了什么,我的搜索没有找到我正在寻找的答案。有谁知道我错过了什么?

回答

4

您需要将方案,MIME类型和主机添加到您的<intent-filter>。现在,我不知道的MIME类型是什么确切的说,所以我猜测,从the AOSP Calendar app以下<intent-filter>是你追求什么:

<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="time/epoch" /> 
    <data android:host="com.android.calendar" /> 
    <data android:scheme="content"/> 
</intent-filter> 

您当前<intent-filter>将匹配什么,除非一些应用程序有缺陷,尝试开始ACTION_VIEW活动,没有Uri

+0

谢谢你,这个伎俩。我一直认为,对于content:方案数据,我不需要在我的中提供标签。谢谢你让我挺直。 – 2014-09-29 23:13:17