Reputation: 3218
Is there a way to open Chrome app on Android from default Android browser? I'm able to open the app, but it doesn't redirect user to correct page. This is what I tried:
<a href="googlechrome://www.toovia.com">
I saw that I may have to form an intent URL, but I was hoping that there is a much easier way than that.
This is supposed to be from a web page and there is no web view involved.
Upvotes: 21
Views: 51137
Reputation: 111
It works for me :
try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
intent.setPackage("com.android.chrome");
activity.startActivity(intent);
} catch (ActivityNotFoundException e) {
// chrome app not install
}
Upvotes: 0
Reputation: 2049
Android Kotlin
Try this below code for intent to chrome browser in kotlin.
val uri = Uri.parse("googlechrome://navigate?url="+"https://stackoverflow.com/")
val i = Intent(Intent.ACTION_VIEW, uri)
if (i.resolveActivity([email protected]) == null) {
i.data = Uri.parse("https://stackoverflow.com/")
}
[email protected](i)
Upvotes: 1
Reputation: 17472
I am using below code to open Chrome browser
from Android app
String urlString = "http://google.com";
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)
{
//if Chrome browser not installed
intent.setPackage(null);
context.startActivity(intent);
}
Upvotes: 1
Reputation: 32271
Here is a solution without a try catch,
if chrome is installed, it will be used. Otherwise, it will go to the device default
void open(Activity activity, String url) {
Uri uri = Uri.parse("googlechrome://navigate?url=" + url);
Intent i = new Intent(Intent.ACTION_VIEW, uri);
if (i.resolveActivity(activity.getPackageManager()) == null) {
i.setData(Uri.parse(url));
}
activity.startActivity(i);
}
Upvotes: 14
Reputation: 66
The best thing is to detect the user browser
alert(navigator.userAgent);
and depending on a conditional statement
if (navigator.userAgent.indexOf('foo')) {
// code logic
}
and based on that use BOM API to update window location
window.location.href = 'googlechrome://navigate?url='+ link;
Upvotes: 4
Reputation: 3369
I opened my Safe Browser App with getting package name from Google play, the same way you can open for chrome by default also:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://Your URL"));
intent.setPackage("com.cloudacl"); // package of SafeBrowser App
startActivity(intent);
You can replace package com.cloudacl
with this com.android.chrome
to open chrome.
Upvotes: 3
Reputation: 682
The Intent solutions above no longer seem to work.
The following works for me ..
document.location = 'googlechrome://navigate?url=www.tovia.com/';
Upvotes: -1
Reputation: 6834
Yes, but if it's not installed on the system you'll run into an ActivityNotFoundException. If it's not available, you should launch through the normal browser:
String url = "http://mysuperwebsite";
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 not installed
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(i);
}
Upvotes: 19