2011-12-10 115 views
1

我知道這個問題在SO上被問及許多次,但我無法讓它工作。這裏是我的清單文件(我有3個活動,我展示,我想相關時要顯示的只有一個):當我啓動一個瀏覽器,進入「example.com」Android:使用意圖過濾器啓動應用程序不起作用

<activity 
     android:name=".MyActivity" 
     android:label="@string/app_name" 
     android:theme="@style/HoloDarkTheme" > 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 
      <action android:name="android.intent.action.ACTION_SEND" /> 
      <action android:name="android.intent.action.EXTRA_TEXT" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.action.BROWSABLE" /> 
      <category android:name="android.intent.action.DEFAULT" /> 
      <data android:scheme="http" /> 
      <data android:host="example.com" /> 
     </intent-filter> 
    </activity> 

,我應用程序未啓動。上述XML有什麼問題嗎?

不確定是否相關,但此活動使用MediaPlayer播放視頻。此外,我正在使用SDK版本11.

回答

1

我想通了。這僅僅是一個錯字。取而代之的是,

 <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.action.BROWSABLE" /> 
     <category android:name="android.intent.action.DEFAULT" /> 

我需要在最後兩行用「包含android.intent.category」取代「android.intent.action」:

 <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
-1

請確保您的清單中有Internet權限。

+0

是的,它在那裏。 – jules

+0

簡單應用啓動不需要。我看到這一點是因爲我無法正常工作並發現此線程。我添加了「互聯網許可」(實際上是android。permission.INTERNET)並且仍然有同樣的問題。我最終得到了它的工作(請參閱我在此線程中的其他答案),然後獲得此權限,它仍然工作。 –

-1

我懷疑你可以重寫http方案指向你的應用程序。

+0

我只是嘗試用自定義的方案「myscheme」替換「http」,它仍然不起作用。 – jules

+1

您可以使用http方案啓動您的應用程序,它只是啓動所有瀏覽器。 –

0

我在這裏加入這個答案因爲這個線程是谷歌搜索「意圖過濾器啓動應用程序從http不工作」的頂級命中之一。我想我的根本原因也可能被認爲是一個錯字,但我將其稱爲「Android文檔缺陷」。

有一個行的路向的this page底部,打破了一個URI爲:

<scheme>://<host>:<port>/<path> 

此故障指出,「://」,「:」和「/」將是我加入所以我用下面的數據在我intent-filter

<data android:scheme="http" /> 
<data android:host="my.school.edu" /> 
<data android:path="thingy" /> 

我再送到自己與下面的文本短信:「my.school.edu/thingy」,這是由我的SMS客戶端(視頻羣聊)爲認可網址,所以它可以點擊。然而,點擊它只是給了我一個瀏覽器的選擇,我的應用程序是一個沒有顯示。

所以我刪除了主機和路徑,我的應用程序啓動任何鏈接(或至少每一個我試過)。我把主機放回去了,它仍然工作。把路徑放回去,我們又回不了工作。一時興起,我決定在路徑上加上斜線:

<data android:path="/thingy" /> 

......等等!在瀏覽器中有我的應用程序!所以我認爲錯誤是Android的文檔,這表明斜槓是自動插入的。 :)它顯然不是。

更多信息:我使用的是HTTP方案,因爲這使得短信和電子郵件中的點擊成爲可能,這讓我可以搭便車。

請注意,如果您指定一個唯一的主機(和路徑),並且用戶從列表中選擇您的應用程序時選擇「始終」,未來的鏈接將跳過該選擇對話框並直接進入您的應用程序,這很好。

相關問題