2010-01-07 8 views
6

J'essaie d'attraper une intention de recherche Android Market.Attraper les intentions de recherche de marché?

C'est la façon dont vous lancez Android Market et la recherche d'une application par nom du package:

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

Maintenant, voici le filtre intention pour un de mes activités:

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

J'attends Android pour me demander quelle application devrait gérer l'intention qui ne se produit pas.
Pourtant, si je remplace market avec market1 ou search avec search1, dans les deux endroits, mon activité est lancée.
Y a-t-il une notion d'intentions «intouchables» ou quelque chose?

TIA.

Répondre

8

Cela est en effet étrange, et va un peu contre tout le système d'intention ouvert. Je sais qu'il y a des émissions que seul le système peut créer, mais je n'avais pas entendu parler d'une telle chose pour la résolution de l'intention.

Quoi qu'il en soit, je viens de déverser le APK du marché sur mon HTC Hero et vérifié le manifeste. Ils sont légèrement plus spécifiques dans leur appariement URI en ajoutant le chemin:

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

Cependant, j'essayé d'ajouter à mon application, sauf que j'augmenté la valeur de priorité (not that I've seen that have any effect before), mais encore je ne pouvais pas capturez le Intent.

Espérons que quelqu'un (ou PSBA) peuvent faire la lumière sur la situation ...

+13

En définissant la priorité comme celui-ci, aucune application tierce peut intercepter l'intention. Seules les applications installées dans la partition système peuvent se voir attribuer une priorité> 0. – hackbod

+1

Ah ah! Merci beaucoup pour l'info. –

+2

@hackbod serait bien si cela pourrait être ajouté à la doc http://developer.android.com/guide/topics/manifest/intent-filter-element.html#priority –