Android неявное намерение не показывает правильный список приложений для воспроизведения файла mp4 - PullRequest
0 голосов
/ 29 марта 2020

У меня есть служба переднего плана , которая должна запускать неявное намерение воспроизвести файл mp4. Намерение выглядит так:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(media_uri);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
}

Переменная media_uri содержит Uri файла mp4. Фильтр намерений таков:

<service
    android:name=".MahalayaService"
    android:exported="false"
    android:taskAffinity=""
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="application/mp4" />
    </intent-filter>
</service>

Намерение запускает список приложений, но ни одно из них не может воспроизвести файл mp4:

enter image description here

Обратите внимание, что у меня установлено несколько программ, которые могут воспроизводить файл mp4. Когда я нажимаю на файл mp4 из файлового браузера, я вижу это:

enter image description here

Где я иду не так? Почему неявное намерение не запускает правильный набор приложений для воспроизведения файла mp4? Я установил неправильный тип MIME?

1 Ответ

0 голосов
/ 29 марта 2020

Нашел ответ! Да, я установил неправильный тип MIME.

Я изменил намерение на intent.setDataAndType(media_uri, "video/*"); и изменил фильтр намерений на <data android:mimeType="video/mp4" />. Это решило проблему.

...