juminoz
juminoz

Reputation: 3218

Open Chrome App with URL

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

Answers (8)

Barry Zhang
Barry Zhang

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

Aftab Alam
Aftab Alam

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

Arvind Chourasiya
Arvind Chourasiya

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

Ilya Gazman
Ilya Gazman

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

Maen K Househ
Maen K Househ

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

karan
karan

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

Tim Smith
Tim Smith

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

Cruceo
Cruceo

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

Related Questions