2013-07-18 93 views
2

我從Eclipse嚮導創建了一個基本的Android應用程序。然後,我在現有的之後添加了以下意向過濾器AndroidManifest.xml。這使得支持自定義「樣本://」 URL方案:具有自定義網址方案從Chrome內啓動的Android應用程序?

<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <data android:scheme="sample" /> 
</intent-filter> 

如果我運行Chrome或默認的瀏覽器,並單擊「樣本://」鏈接,它將啓動我的應用程序。但是,如果我查看任務切換器,我的應用程序未列出。相反,我們的應用程序的屏幕截圖顯示了Chrome。

這是爲什麼?它可以修復嗎?我在Galaxy Nexus手機上運行Android 4.2.2。

我注意到,如果我將android:launchMode="singleInstance"添加到活動中,它會在單獨的應用程序中打開。但docs稱這是「不推薦用於一般用途」。爲什麼不?

回答

7

您的活動出現在最近的應用中的原因Chrome是因爲它現在屬於Chrome任務,因爲它是從那裏啓動的。

正如您注意到的,android:launchMode="singleInstance"解決了您的問題,但不建議或不鼓勵,因爲它會制約用戶體驗和導航以及用戶期望您的應用程序的行爲。

幸運的是,我認爲在你HREF指定意向標誌的方式,嘗試這樣的事情:

<A HREF="intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=com.example.package/.MyActivity;end" /> 

在前面的例子launchFlags=FLAG_ACTIVITY_NEW_TASK英寸這個標誌通常由想要呈現「啓動器」風格行爲的活動使用:它們向用戶提供可以完成的單獨事件的列表,否則這些事情將完全獨立於啓動它們的活動。

+0

真的嗎?難道你不希望如果你從一個URL啓動了一個應用程序,你可以在這個應用程序和你的瀏覽器之間來回切換,就好像你手動啓動了應用程序一樣?也許我更習慣iPhone UX,但這似乎很奇怪。 –

+0

這對我來說不起作用,任何人都有另一種解決方案? – AlexLopezIT

相關問題