Вопрос

Я пытаюсь уловить цель поиска на 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) сможет пролить свет на ситуацию...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top