使用隐式意图启动活动?

时间:2011-01-27 13:42:45

标签: android android-manifest android-intent

使用隐式意图在我的应用程序中启动活动时遇到问题。

我创建了活动RecordList(列出所有专辑),RecordEditor(用于添加/编辑记录的轨迹)和TrackEditor。当用户从RecordList中选择new或edit时,我设法让RecordEditor启动。当我尝试将新轨道添加到记录时启动问题(启动TrackEditor活动)。

以下是我如何定义清单中的活动:
RecordList

<activity android:name="RecordList">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <action android:name="android.intent.action.EDIT" />
        <action android:name="android.intent.action.PICK" />
        <data android:mimeType="vnd.android.cursor.item/vnd.example.record" />
    </intent-filter>

    <intent-filter>
        <action android:name="android.intent.action.GET_CONTENT" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="vnd.android.cursor.item/vnd.example.record" />
    </intent-filter>
</activity>

RecordEditor

                                             

<intent-filter>
    <action android:name="android.intent.action.GET_CONTENT" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="vnd.android.cursor.item/vnd.example.track" />
</intent-filter>

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <action android:name="android.intent.action.EDIT" />
    <action android:name="com.example.records.action.EDIT_RECORD" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="vnd.android.cursor.item/vnd.example.record" />
</intent-filter>

<intent-filter>
    <action android:name="android.intent.action.INSERT" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="vnd.android.cursor.dir/vnd.example.record" />
</intent-filter>

TrackEditor

<activity android:name="TrackEditor">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <action android:name="android.intent.action.EDIT" />
        <action android:name="com.example.records.action.EDIT_TRACK" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="vnd.android.cursor.item/vnd.example.track" />
    </intent-filter>

    <intent-filter>
        <action android:name="android.intent.action.INSERT" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="vnd.android.cursor.dir/vnd.example.track" />
    </intent-filter>
</activity>

这是我在尝试向Record添加新曲目时不断获得的例外:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.INSERT dat=content://com.example.provider.Track/tracks }

我已经使用NotePad示例作为基础,但我无法弄清楚我做错了什么。任何帮助,将不胜感激。 :)

1 个答案:

答案 0 :(得分:0)

目前还不清楚您认为自己从这些“隐含意图”中获得了什么。

话虽如此,您的问题在于您的内容提供商。它并未表明content://com.example.provider.Track/tracks的MIME类型是您支持INSERT操作的任何类型。