2010-09-22 111 views
0

我在尋找哪些瀏覽器安裝在Android智能手機和他們的包名的方式來了解一下。找出安裝了哪些瀏覽器?

爲什麼需要它?

嗯,基本上,我的應用程序對某些URL反應,即http://bit.ly,所以當點擊這樣的,他會得到一個選擇在應用程序中打開它。到目前爲止,一切都按照預期工作。

如果用戶設置了該應用程序爲默認這種鏈接,它會一直在這一個沒有進一步詢問用戶開放。到目前爲止這麼好。但通過這樣做,他將完全無法在他的瀏覽器中打開這個鏈接。

所以我需要一種方法將這個意圖直接發送到瀏覽器,但要做到這一點,我必須知道用戶設置爲默認用於http/https方案的應用程序(例如用戶可以更改它安裝了多個瀏覽器)。

發送帶有

intent.setComponent(new ComponentName("com.android.browser", "com.android.browser.BrowserActivity")); 

的打算should't是一個問題,我想。問題是,我無法發送URL的標準意圖,因爲如果用戶將其設置爲默認值,我的應用程序會再次捕獲它。

+1

爲什麼你想設置爲發送到默認瀏覽器?只需將該鏈接作爲意圖發送,並讓手機決定將哪個瀏覽器設置爲默認設置。 – Falmarri 2010-09-22 20:43:52

+0

因爲如果我按照正常的意圖發送它,我的應用程序會再次捕獲它(如果設置爲默認值)。在這種情況下,這不是理想的結果。 假設你有一個應用,該應用捕獲http://www.flickr.com/photos/ URL和他們在開啓應用程式。但是現在你想讓用戶有機會在瀏覽器中打開它。如果你發送正常的意圖,你的應用程序會再次打開它。所以你需要將它發送到一個特定的瀏覽器,所以你的應用程序不會再捕獲它 – Tseng 2010-09-22 21:50:17

回答

1

should't是一個問題,我覺得

在硬連線的代碼包和類名是不是你是總是問題。

所以我需要一種方法來此的意圖直接發送給瀏覽器,但這樣做,我必須知道哪些應用程序中的用戶 已設置爲默認值,例如HTTP/HTTPS方式(如用戶可以更改如果安裝了多於1個的 瀏覽器)。

使用PackageManagerqueryIntentActivityOptions()過濾您的活動並獲取用戶可以選擇的其他活動的列表。

+0

謝謝,這是一個正確的方向很好的提示。 – Tseng 2010-09-24 10:00:23

相關問題