2010-01-07 7 views
6

Ich versuche, eine Android Market-Suchabsicht zu erfassen.Fangen Markt suchen Absichten?

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

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

erwarte ich:

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

nun für einen meiner Aktivitäten, hier ist der Intent-Filter Android, um mich zu fragen, welche App mit der Absicht umgehen sollte, die nicht passiert.
Wenn ich jedoch market durch market1 oder search durch search1 ersetze, wird meine Aktivität an beiden Orten gestartet.
Gibt es eine Vorstellung von "unberührbaren" Absichten oder etwas?

TIA.

Antwort

8

Das ist in der Tat seltsam, und irgendwie geht gegen das ganze offene Absichtssystem. Ich weiß, dass es Sendungen gibt, die nur das System erzeugen kann, aber ich hatte noch nie von einer solchen Absicht gehört.

Wie auch immer, ich habe gerade die Market APK auf meinem HTC Hero abgelegt und das Manifest überprüft. Sie sind geringfügig mehr spezifisch in ihrer URI-Matching durch Hinzufügen der Pfad:

<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 (not that I've seen that have any effect before) erhöht, aber dennoch konnte ich nicht erfassen Sie die Intent.

Hoffentlich jemand (oder die AOSP) etwas Licht auf der Situation vergießen ...

+13

Durch die Priorität wie diese Einstellung, keine Dritte Anwendung kann die Absicht abfangen. Nur Apps, die in der Systempartition installiert sind, kann eine Priorität> 0 zugewiesen werden. – hackbod

+1

Ah ha! Vielen Dank für die Info. –

+2

@hackbod wäre nett, wenn das zu den Dokumenten hinzugefügt werden könnte http://developer.android.com/guide/topics/manifest/intent-filter-element.html#priority –

Verwandte Themen