如何捕获日历事件的Android View意图?

时间:2014-09-29 22:38:13

标签: android android-intent

我希望能够显示我自己的日历活动,给出Android意图和要显示的日期。我相信这样做的意图如下:

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

我已经设置了Activity以使用在我的AndroidManifest.xml中指定的intent过滤器处理此intent:

<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的候选者。

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

1 个答案:

答案 0 :(得分: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