2010-01-07 86 views
6

我正試圖抓住Android電子市場的搜索意圖。捕捉市場搜索意圖?

這是你推出Android市場,並通過包名稱搜索應用程序的方式:

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問我哪個應用程序應該處理不發生的意圖。
但是,如果我用market1search替換marketsearch1,在這兩個地方,我的活動都會啓動。
有沒有「不可觸摸」的意圖或什麼的概念?

TIA。

回答

8

這確實很奇怪,有點違背整個開放意圖系統。我知道只有系統可以創建廣播,但我沒有聽說過這樣的意圖解決。

無論如何,我只是在我的HTC Hero上放棄了Market APK,並檢查了清單。他們通過添加路徑是在他們的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> 

不過,我嘗試添加這我的應用程序,但我增加了優先級值(not that I've seen that have any effect before),但我還是沒能捕獲Intent

希望有人(或AOSP)可以擺脫對情況的一些光...

+13

通過設置優先級這樣的,沒有第三方應用程序可以攔截意圖。只有安裝在系統分區中的應用才能被授予大於0的優先級。 – hackbod 2010-01-07 23:35:32

+1

啊哈!非常感謝這些信息。 – 2010-01-07 23:51:35

+2

@hackbod會很好,如果可以添加到文檔http://developer.android.com/guide/topics/manifest/intent-filter-element.html#priority – 2010-01-08 01:02:49