简体   繁体   中英

Launch Browser Intent with Custom Class - cannot find Activity

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 .

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

i use this, it's ok.

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

i think you know what wrong. :)

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... :)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM