Open the native browser from an android app
Solution 1
From my App, How do I force open a link only in the NATIVE android browser?
Intent intent = new Intent();
ComponentName comp = new ComponentName("com.google.android.browser","com.google.android.browser.BrowserActivity");
intent.setComponent(comp);
intent.setAction("android.intent.action.VIEW");
intent.addCategory("android.intent.category.BROWSABLE");
Uri uri = Uri.parse(url);
intent.setData(uri);
try
{
startActivity(intent);
}
catch (Exception e)
{
e.printStackTrace();
}
Is there a way I can know if there is a browser set to default or not?
PackageManager packageManager = getPackageManager();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("URL"));
List<ResolveInfo> list = packageManager.queryIntentActivities(intent, 0);
if (list.size() > 0) {
for (ResolveInfo resolveInfo : list) {
resolveInfo.isDefault();// will let u know if the app is set to default
}
} else {
//No apps available
}
Solution 2
You have to make the following for calling the native browser
intent.setComponent(new
componentName("com.android.browser","com.android.browser.BrowserActivity"));
Solution 3
try something like this.
try {
Intent i = new Intent();
ComponentName comp = new ComponentName("com.google.android.browser","com.google.android.browser.BrowserActivity");
i.setComponent(comp);
i.setAction("android.intent.action.VIEW");
i.addCategory("android.intent.category.BROWSABLE");
ContentURI uri = new ContentURI(url);
i.setData(uri);
startActivityForResult(i, 2);
} catch (URISyntaxException e) {
e.printStackTrace();
}
for your second question you can use PackageManager
.
get instance of PackageManager
PackageManager packageManager = getPackageManager();
and query it for specific action, data and category of Intent
.
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("URL"));
List<ResolveInfo> list = packageManager.queryIntentActivities(intent, 0);
for (ResolveInfo resolveInfo : list) {
if(resolveInfo.isDefault())
{
//default browser
}
}
Solution 4
Finally figured it out. resolveActivity works with MATCH_DEFAULT_ONLY flag on PackageManager instance..
Solution 5
it might occur ActivityNotFoundException while the package name is different by manufacturer. Please refer to this answer, wish it would help.
![defactodeity](https://i.stack.imgur.com/7aEQB.jpg?s=256&g=1)
Comments
-
defactodeity about 2 years
I have an android phone with multiple browsers installed and I might or might not set a browser to default.
So, my question is..
- From my App, How do I force open a link only in the NATIVE android browser?
- Is there a way I can know if there is a browser set to default or not?
-
defactodeity about 12 yearsThanks a lot @N-JOY The following code answered the first question.
Intent ii = new Intent(); ComponentName comp = new ComponentName("com.android.browser","com.android.browser.BrowserActivity"); ii.setComponent(comp); ii.setAction("android.intent.action.VIEW"); ii.addCategory("android.intent.category.BROWSABLE"); ii.setData(Uri.parse("http://www.google.com")); startActivity(ii);
For the second part of the question, Is there a way to know if there's a default browser set on the phone? -
defactodeity about 12 yearsThe above code has failed to identify the default browser. On my device, I set Opera as default browser but when I run this code, I don't see
resolveInfo.isDefault
is ever true for any browser! Please help. -
defactodeity about 12 yearsI have set a browser to default but
resolveInfo.isDefault
doesn't seem to work.