У меня есть приложение, которое может просматривать разные типы видеофайлов, используя фильтры намерений из разных источников. Чтобы приложение всегда отображалось как вариант выбора, когда я пытаюсь открыть любой видеофайл, я поместил этот код в манифест.
<intent-filter>
<action android:name = "android.intent.action.VIEW"/>
<action android:name = "android.intent.action.PICK"/>
<data android:mimeType = "video/*" />
</intent-filter>
Таким образом, я могу получить Uri в приложении, обрабатывающем его в основном действии.
Хотя кажется, что все работает как положено, каждый раз, когда я пытаюсь отредактировать манифест, Android Studio помечает весь код фильтра намерений красным подчеркиванием, сообщая об ошибке missing url.
Ошибка исчезает, если я удалю <data android:mimeType = "video/*" />, но если я это сделаю, приложение появится как выбор не только для видеофайлов.
Подсказка отсутствует URL-адрес не из-за action.PICK, ошибка связана с action.VIEW
<intent-filter>
<action android:name = "android.intent.action.VIEW"/> //delete this line
<action android:name = "android.intent.action.PICK"/>
<category android:name = "android.intent.category.DEFAULT"/> //add this line
<category android:name = "android.intent.category.OPENABLE"/> //and this
<data android:mimeType = "video/*" />
</intent-filter>
для action.VIEW вы можете определить другой фильтр намерения.
Я знаю, что ошибка связана с действием VIEW, как указано в заголовке моего вопроса. Проблема в том, что я хочу иметь как действие PICK, так и VIEW, и я не понимаю, почему эта ошибка возникает только при наличии строки mimeType. Используя ваш код, я потерял возможность получить действие. ПОСМОТРЕТЬ намерение, которое еще хуже (как я уже сказал, приложение работает, несмотря на отметку об ошибке в редакторе Android Studio)
@AndreaF У меня такая же проблема. Вы можете просто подавить это предупреждение.
Чтобы подавить, попробуйте следующее:
<intent-filter tools:ignore = "AppLinkUrlError">
<action android:name = "android.intent.action.VIEW"/>
<action android:name = "android.intent.action.PICK"/>
<data android:mimeType = "video/*" />
</intent-filter>
добавьте xmlns: tools = "http://schemas.android.com/tools" в свой начальный тег манифеста, если его еще нет.
Что ж, это уродливое решение
Ребятам из Google, кажется, нравится намекать, а не отвечать на вопросы глубинные ссылки.
Важно правильно указать схему. Для файлов в более старых версиях это «файл», в более новых версиях Android - «контент». Для ссылок это http и https.
<intent-filter>
<action android:name = "android.intent.action.VIEW" />
<category android:name = "android.intent.category.DEFAULT" />
<data
android:host = "*"
android:mimeType = "application/octet-stream"
android:pathPattern = ".*\\.ext"
android:scheme = "file" />
</intent-filter>
<intent-filter>
<action android:name = "android.intent.action.VIEW" />
<category android:name = "android.intent.category.DEFAULT" />
<data
android:host = "*"
android:mimeType = "application/octet-stream"
android:pathPattern = ".*\\.ext"
android:scheme = "content" />
</intent-filter>
ты нашел ответ?