Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there any way in Android to force open a link to open in Chrome?

I'm currently testing a web app developed with lots of jQuery animations, and we've noticed really poor performance with the built-in web browser. While testing in Chrome, the performance of the web app is unbelievably quicker. I'm just wondering if there was any type of script that would force open a link in Chrome for Android, similar to how it's done in iOS.

like image 275
user1607943 Avatar asked Aug 17 '12 21:08

user1607943


People also ask

How do I make Chrome open links instead of apps?

How do I change the default app for opening links on Android? Go into settings and there should be a search box, type “default” into the box. You can then select the default Browser app - this app will be used (by default) to open web links.


2 Answers

A more elegant way to achieve this is to use the Intent.ACTION_VIEW intent as normal, but add the package com.android.chrome to the intent. This works regardless of whether Chrome is the default browser and ensures exactly the same behavior as if the user had selected Chrome from the chooser list.

String urlString = "http://mysuperwebsite"; Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(urlString)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setPackage("com.android.chrome"); try {     context.startActivity(intent); } catch (ActivityNotFoundException ex) {     // Chrome browser presumably not installed so allow user to choose instead     intent.setPackage(null);     context.startActivity(intent); } 

Update

For Kindle Devices:

Just in case if you want to open Amazon Default Browser in case chrome app is not installed in Amazon Kindle

String urlString = "http://mysuperwebsite"; Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(urlString)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setPackage("com.android.chrome"); try {     context.startActivity(intent); } catch (ActivityNotFoundException ex) {     // Chrome browser presumably not installed and open Kindle Browser     intent.setPackage("com.amazon.cloud9");     context.startActivity(intent); } 
like image 169
Martin Avatar answered Sep 25 '22 17:09

Martin


There are two solutions.

By package

    String url = "http://www.example.com";     Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));     i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);     i.setPackage("com.android.chrome");     try {         startActivity(i);     } catch (ActivityNotFoundException e) {         // Chrome is probably not installed         // Try with the default browser         i.setPackage(null);         startActivity(i);     } 

By scheme

    String url = "http://www.example.com";     try {         Uri uri = Uri.parse("googlechrome://navigate?url=" + url);         Intent i = new Intent(Intent.ACTION_VIEW, uri);         i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);         startActivity(i);     } catch (ActivityNotFoundException e) {         // Chrome is probably not installed     } 

WARNING! The following technique does not work on most recent versions of Android. It is here for reference, because this solution has been around for a while:

    String url = "http://www.example.com";     try {         Intent i = new Intent("android.intent.action.MAIN");         i.setComponent(ComponentName.unflattenFromString("com.android.chrome/com.android.chrome.Main"));         i.addCategory("android.intent.category.LAUNCHER");         i.setData(Uri.parse(url));         startActivity(i);     }     catch(ActivityNotFoundException e) {         // Chrome is probably not installed     } 
like image 23
philippe_b Avatar answered Sep 22 '22 17:09

philippe_b