Frage

Ich versuche, eine Android Market Suchabsicht zu fangen.

Das ist so, wie Sie Android Market starten und für eine App nach Paketnamen:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:com.google.somepackage")));

Nun, hier sind die Intent-Filter für eine meiner Tätigkeiten:

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

Ich würde Android erwarten, mich zu fragen, welche App sollte die Absicht behandeln, die nicht geschieht.
Doch wenn ich market mit market1 oder search mit search1 ersetzen, in beiden Orten, wird meine Tätigkeit ins Leben gerufen.
Gibt es einen Begriff der „Unberührbaren“ Absichten oder so etwas?

TIA.

War es hilfreich?

Lösung

Das ist seltsam in der Tat, und irgendwie geht gegen das ganze offene Absicht System. Ich weiß, es gibt Sendungen, die nur das System erstellen können, aber ich hatte nicht so etwas für Vorsatz Auflösung gehört.

Wie auch immer, ich abgeladen nur den Markt APK auf meinem HTC Hero und überprüfte das Manifest. Sie sind in ihrem URI-Matching etwas präziser zu sein, indem Sie den Pfad hinzufügen:

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

Allerdings habe ich versucht, diese zu meinen app, außer ich den Prioritätswert (

scroll top