2011-07-22 40 views
3

我的Android設備上有多個瀏覽器。我可以使用下面的代碼使用默認的Android瀏覽器打開一個URI:在android中,如何強制使用特定瀏覽器打開URI,而不彈出'選擇瀏覽器'列表?

String packageName = "com.android.browser"; 
    String className = "com.android.browser.BrowserActivity"; 
    Intent internetIntent = new Intent(Intent.ACTION_VIEW); 
    internetIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
    internetIntent.setClassName(packageName, className); 
    startActivity(internetIntent); 

我怎樣才能達到同樣的使用安裝設備上指定的瀏覽器,說戲。

非常感謝。

回答

8

您需要將packageName和className設置爲瀏覽器活動的包名和類名。

例如,Opera Mini的,你需要做到以下幾點:

String packageName = "com.opera.mini.android"; 
String className = "com.opera.mini.android.Browser"; 
Intent internetIntent = new Intent(Intent.ACTION_VIEW); 
internetIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
internetIntent.setClassName(packageName, className); 
startActivity(internetIntent); 

其他瀏覽器,你可以通過執行以下操作找到包和類名:

  • 連接Android手機以PC
  • 開放的Android logcat的
  • 推出從手機瀏覽器

在Android的logcat中,你會看到這樣的事情:

07-22 14:06:14.662: INFO/ActivityManager(148): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.opera.mini.android/.Browser } 

類的名字將在 '議定書' 屬性顯示:CMP = com.opera.mini.android/.Browser

在這種情況下,包名稱是com.opera.mini.android,類名稱是com.opera.mini.android.Browser。

+0

萬歲!謝謝。它在我的手機上使用了以下值: –

+0

Hurray!謝謝。它在我的手機上使用包名「com.opera.browser」和類名「com.opera.Opera」。 但是,由於您的設備不同,所以其他設備也可能具有不同的值。有沒有其他的方式來強制使用指定的瀏覽器打開URL?或者我如何獲得特定瀏覽器的所有包/名稱列表。在後一種情況下,無論何時發佈新的瀏覽器版本,我都需要更新我的應用程序代碼。 –

+0

我的設備上的包和類名稱沒有區別; Opera有兩種版本的Opera:Opera Mobile和Opera Mini。在我的例子中,我使用Opera Mini。我也檢查過Opera Mobile,並且包名和類名是您使用的名稱。所以基本上我懷疑有可能在不同的設備上有不同的包和類名。另外,從一個版本到另一個版本,開發人員更改類和包名稱的可能性很小。所以,基本上,我認爲你不必更新你的應用程序代碼,或者至少不經常更新。 – Gabriel

相關問題