Улавливаете намерения поиска на рынке?
-
19-09-2019 - |
Вопрос
Я пытаюсь уловить цель поиска на Android Market.
Вот как вы запускаете Android Market и ищете приложение по названию пакета:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:com.google.somepackage")));
А вот фильтр намерений для одного из моих действий:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="market" android:host="search" />
</intent-filter>
Я ожидаю, что Android спросит меня, какое приложение должно обрабатывать намерение, но этого не происходит.
И все же, если я заменю market
с market1
или search
с search1
, в обоих местах моя активность запускается.
Есть ли понятие «неприкасаемых» намерений или что-то в этом роде?
ТИА.
Решение
Это действительно странно и противоречит всей системе открытых намерений.Я знаю, что есть трансляции, которые может создать только система, но я не слышал о таком способе разрешения намерений.
В любом случае, я только что сбросил APK-файл Market на свой HTC Hero и проверил манифест.Они немного более конкретизируют сопоставление URI, добавляя путь:
<intent-filter android:priority="100">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http"
android:host="market.android.com" android:path="/search" />
<data android:scheme="market"
android:host="search" android:path="" />
</intent-filter>
Однако я попытался добавить это в свое приложение, но увеличил значение приоритета (не то чтобы я видел, чтобы это имело какой-либо эффект раньше), но мне все равно не удалось запечатлеть Intent
.
Надеюсь, кто-нибудь (или AOSP) сможет пролить свет на ситуацию...