Есть ли способ в Android заставить открыть ссылку для открытия в Chrome?

В настоящее время я тестирую webapp, разработанный с множеством анимаций JQuery, и мы заметили очень низкую производительность со встроенным веб-браузером. При тестировании в Chrome производительность webapp невероятно быстра. Мне просто интересно, есть ли какой-либо скрипт, который заставит открыть ссылку в Chrome для Android, подобно тому, как это делается в iOS.

Solutions Collecting From Web of "Есть ли способ в Android заставить открыть ссылку для открытия в Chrome?"

Более элегантный способ добиться этого – использовать намерение Intent.ACTION_VIEW как обычно, но добавьте пакет com.android.chrome в намерение. Это работает независимо от того, является ли Chrome браузером по умолчанию и обеспечивает точно такое же поведение, как если бы пользователь выбрал Chrome из списка выбора.

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

Обновить

Для устройств Kindle:

На всякий случай, если вы хотите открыть Amazon Default Browser в случае, если приложение Chrome не установлено в 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); } 

Есть два решения.

По пакету

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

По схеме

  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 } 

ПРЕДУПРЕЖДЕНИЕ! Следующая технология не работает в самых последних версиях Android. Он здесь для справки, потому что это решение было какое-то время:

  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 } 

Все предлагаемые решения больше не работают для меня. Благодаря @pixelbandito он указал мне в правильном направлении. Я нашел следующую константу в хромовых источниках

 public static final String GOOGLECHROME_NAVIGATE_PREFIX = "googlechrome://navigate?url="; 

И следующее использование:

  Intent intent = new Intent("android.intent.action.VIEW", Uri.parse("googlechrome://navigate?url=chrome-native://newtab/")); 

Таким образом, решение (обратите внимание, что URL не должен быть закодирован)

 void openUrlInChrome(String url) { try { 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) { Uri uri = Uri.parse(url); // Chrome is probably not installed // OR not selected as default browser OR if no Browser is selected as default browser Intent i = new Intent(Intent.ACTION_VIEW, uri); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); } } catch (Exception ex) { Timber.e(ex, null); } } 

В ответ на ответ @ philippe_b я хотел бы добавить, что этот код не будет работать, если Chrome не установлен. Еще один случай, когда он не будет работать – это тот случай, когда Chrome не выбран в качестве браузера по умолчанию (но установлен) ИЛИ даже если в качестве значения по умолчанию не выбран ни один браузер.

В таких случаях добавьте также следующую часть уловления кода.

 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("http://mysuperwebsite")); startActivity(i); } catch(ActivityNotFoundException e) { // Chrome is probably not installed // OR not selected as default browser OR if no Browser is selected as default browser Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("somesite.com")); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); } 

Это работает в Firefox и Opera

document.location = 'googlechrome://navigate?url=www.example.com/';

Вот ближайший я нашел: Написание url и замена http с googlechrome откроет Chrome, но он, похоже, не открывает указанный URL. Я работаю с Samsung Galaxy S5, Android 5.0

Это лучшее, что я нашел – любое другое решение, которое я видел на SO, требует приложения для Android, а не webapp.