Использование неявного намерения для запуска активности?

У меня проблема с использованием неявного намерения для запуска активности в моем приложении.

Я создал действия RecordList (список всех альбомов), RecordEditor (используется для добавления/редактирования дорожек записи) и TrackEditor. Мне удалось запустить RecordEditor, когда пользователь выбирает новый или редактирует из RecordList. Проблема возникает, когда я пытаюсь добавить новую дорожку в запись (запускаю действие 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>

Редактор записей

<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>

И вот исключение, которое я продолжаю получать при попытке добавить новый трек в запись:

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

Я использовал пример NotePad в качестве основы для этого, но я не могу понять, где я делаю неправильно. Любая помощь будет оценена по достоинству. :)


person svidnas    schedule 27.01.2011    source источник


Ответы (1)


Неясно, что, по вашему мнению, вы получаете от этих «неявных намерений».

При этом ваша проблема связана с вашим контент-провайдером. Это не означает, что тип MIME для content://com.example.provider.Track/tracks является одним из тех, для которых вы поддерживаете действие INSERT.

person CommonsWare    schedule 27.01.2011
comment
Я просто пытаюсь познакомиться с созданием пользовательских поставщиков контента и заставить их работать с неявными намерениями. Я проверю свои типы MIME и попытаюсь выяснить, в чем проблема. Спасибо за вашу помощь. - person svidnas; 28.01.2011