Launch Browser Intent with Custom Class - cannot find Activity
Asked Answered
C

3

9

I want to specifically run the default Android browser for a given URL. I'm using this code:

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);

The error I receive is:

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

I also tried filtering the intents by the package:

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

instead of setClassName, but to no avail:

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 }

I also tried adding <uses-library android:name="com.google.android.browser" /> to the manifest.

Am I missing something here?

PS: I'm not interested in using startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"))) as it will list all the choices for the browsing Intent.

Casmey answered 25/7, 2010 at 11:52 Comment(0)
D
6

i use this, it's ok.

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

i think you know what wrong. :)

Dromond answered 16/8, 2010 at 16:4 Comment(0)
U
6

Please note the default browser can be overridden and it's not always the built in browser app, it can be for example Opera Mini.

You need to do this way:

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri data = Uri.parse("http://www.google.com");
intent.setData(data);
startActivity(intent);
U answered 25/7, 2010 at 14:16 Comment(3)
As I've stated in my question, I want to be able to run the default Android browser, not the default selected browser. As a side node, I've first tried with the solution you mention, but to no avail as it obviously launches the browser that is set as default (or launches the application selector).Casmey
how to use this intent in a non activity class??Maurya
The drawback for this - for local html files it launches HTMLViewer app instead of browser.Baty
D
6

i use this, it's ok.

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

i think you know what wrong. :)

Dromond answered 16/8, 2010 at 16:4 Comment(0)
H
1

One way to open an URL in a browser from code is to use a webview .

Create a WebViewClientClass that extends the WebViewClient like :

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

Then create a webview. Set webview.setWebViewClient(new WebViewClientClass()); --- this is a small workaround so that the default web browser doesn't take over .

Then take the url in an edittext and set it to load the browser as :

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

This should load the web browser with the URL that you requested.

Hope this helps... :)

Hyacinthus answered 26/7, 2010 at 16:52 Comment(2)
do not set the webview.setWebViewClient if you want your default web browser to take over your request ...Hyacinthus
I don't want to launch a browser window (or for that matter use my own browser). I want to launch the default browser that comes with Android. Also, launching a browser window would introduce additional complexity, like managing the cache, bookmarks, back button, etc, etc. Btw, please format your code ;)Casmey

© 2022 - 2024 — McMap. All rights reserved.