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

4

3 回答 3

6

我用这个,没问题。

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

我想你知道哪里错了。:)

于 2010-08-16T16:04:31.397 回答
6

请注意默认浏览器可以被覆盖,它并不总是内置的浏览器应用程序,它可以是例如 Opera Mini。

你需要这样做:

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri data = Uri.parse("http://www.google.com");
intent.setData(data);
startActivity(intent);
于 2010-07-25T14:16:19.763 回答
1

从代码在浏览器中打开 URL 的一种方法是使用 webview 。

创建一个扩展 WebViewClient 的 WebViewClientClass,例如:

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

然后创建一个网页视图。 Set webview.setWebViewClient(new WebViewClientClass()); --- 这是一个小的解决方法,因此默认 Web 浏览器不会接管。

然后在edittext中获取url并将其设置为将浏览器加载为:

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

这应该使用您请求的 URL 加载 Web 浏览器。

希望这可以帮助... :)

于 2010-07-26T16:52:04.407 回答