2010-07-25 49 views
9

我想專門運行給定URL的默認Android瀏覽器。我使用此代碼:使用自定義類啓動瀏覽器意圖 - 找不到活動

Intent i = new Intent(); 
i.setAction("android.intent.action.VIEW"); 
i.addCategory("android.intent.category.BROWSABLE"); 
i.setClassName("com.google.android.browser", "com.android.browser.BrowserActivity"); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
i.setData(Uri.parse(url)); 
startActivity(i); 

我收到的錯誤是:

Unable to find explicit activity class { 
com.google.android.browser/com.android.browser.BrowserActivity}; 
have you declared this activity in your AndroidManifest.xml? 

我也試圖通過包過濾的意圖:

i.setPackage("com.google.android.browser"); 

代替setClassName,但無效:

No Activity found to handle Intent { act=android.intent.action.VIEW 
cat=[android.intent.category.BROWSABLE] 
dat=http://www.google.com/ flg=0x10000000 pkg=android } 

我也嘗試將<uses-library android:name="com.google.android.browser" />添加到清單。

我在這裏錯過了什麼嗎?

PS:我對使用startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")))不感興趣,因爲它會列出所有瀏覽Intent的選項。

回答

6

我用這個,沒關係。

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

我想你知道錯了什麼。 :)

6

請注意,默認瀏覽器可以覆蓋,它並不總是內置的瀏覽器應用程序,它可以是例如Opera Mini。

你需要做的是這樣的:

Intent intent = new Intent(Intent.ACTION_VIEW); 
Uri data = Uri.parse("http://www.google.com"); 
intent.setData(data); 
startActivity(intent); 
+4

正如我在我的問題中所述,我希望能夠運行*默認的Android瀏覽器*,而不是*默認選定的*瀏覽器。作爲一個邊節點,我首先嚐試了您提到的解決方案,但無濟於事,因爲它顯然會啓動默認設置的瀏覽器(或啓動應用程序選擇器)。 – 2010-07-25 15:15:21

+0

如何在非活動類中使用這個意圖? – Maxwell 2014-05-03 06:36:12

+0

這個缺點 - 對於本地html文件,它啓動HTMLViewer應用程序而不是瀏覽器。 – JustAMartin 2017-02-20 16:55:05

1

一種方法來打開從代碼瀏覽器的URL是使用網頁視圖。

創建擴展像WebViewClient一個WebViewClientClass:

public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    view.loadUrl(url); 
    return true; 
} 

然後創建一個web視圖。 Set webview.setWebViewClient(new WebViewClientClass()); ---這是一個小的解決方法,以便默認的Web瀏覽器不接管。

然後採取URL中一個EditText並將其設置爲加載瀏覽器:

webview.loadurl(urlfield.getText().toString()); 
webview.requestFocus(); 

這應該加載與您請求的URL的網頁瀏覽器。

希望這有助於... :)

+0

如果您希望您的默認Web瀏覽器接管您的請求,請不要設置webview.setWebViewClient ... – Flash 2010-07-26 17:16:49

+1

我不想啓動瀏覽器窗口(或使用*我自己的*瀏覽器)。我想啓動Android *附帶的*默認瀏覽器。另外,啓動一個瀏覽器窗口會引入額外的複雜性,比如管理緩存,書籤,後退按鈕等等。順便說一句,請格式化你的代碼;) – 2010-07-26 18:23:37

相關問題