What is the intent to launch any website link in G

2019-02-15 18:06发布

问题:

Hi I want to open the website in chrome app from my app webview when user click on particular link. I see this is possible https://developer.chrome.com/multidevice/android/intents, here on this it's for the zxing app, not for google chrome.

<a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;end"> Take a QR code </a>

I want same syntax for Google Chrome. Currently I am opening link in the webview, on click on link I want to specify a intent of chrome there like zxing.

In other words, I have a webview in which I opened a particular URL then after if user click on "XYZ" or something in the webview there then it should open google chrome. So for this i will add some chrome intent tag in the html that's syntax I am looking –

Please share if you know syntax for opening Google Chrome any hyperlink.

Thanks in advance.

回答1:

It seems you're looking for the new Android Intents link that will create and explicit intent for the device for a link.

<a href="intent://<URL>#Intent;scheme=http;package=com.android.chrome;end">

works for me. so

<a href="intent://stackoverflow.com/questions/29250152/what-is-the-intent-to-launch-any-website-link-in-google-chrome#Intent;scheme=http;package=com.android.chrome;end"> 

will take you to this question in Chrome. Note that the scheme is specified separately so if you want to launch https links, you'd have to change scheme to scheme=https

But as everyone is saying, an explicit Chrome intent is a very non-Android thing to do. A better way would be to specify the ACTION_VIEW action like so:

<a href="intent://stackoverflow.com/questions/29250152/what-is-the-intent-to-launch-any-website-link-in-google-chrome#Intent;scheme=http;action=android.intent.action.VIEW;end;">

Source: The same page you linked

Thanks, I learned something today!



回答2:

Below code make launch urls in webview including intent:// url scheme in Android.

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (url != null) {
        if (url.startsWith("http://") || url.startsWith("https://")) {
            view.loadUrl(url);
        } else if (url.startsWith("intent://")) {
            try {
                Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
                Intent existPackage = getPackageManager().getLaunchIntentForPackage(intent.getPackage());
                if (existPackage != null) {
                    startActivity(intent);
                } else {
                    Intent marketIntent = new Intent(Intent.ACTION_VIEW);
                    marketIntent.setData(Uri.parse("market://details?id=" + intent.getPackage()));
                    startActivity(marketIntent);
                }
                return true;
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else if (url.startsWith("market://")) {
            try {
                Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
                if (intent != null) {
                    startActivity(intent);
                }
                return true;
            } catch (URISyntaxException e) {
                e.printStackTrace();
            }
        } else { // unhandled url scheme
             view.getContext().startActivity(
                    new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
        }
        return true;
    } else {
        return false;
    }
}


回答3:

Use this:

String url = "http://www.example.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);

hope this will help..



回答4:

I have tested below code with Nexus 6 with Chrome and Mozilaa installed and it works great,

    String url = "http://www.stackoverflow.com";
    Intent i = new Intent();
    i.setPackage("com.android.chrome");
    i.setAction(Intent.ACTION_VIEW);
    i.setData(Uri.parse(url));
    startActivity(i);

This will give error if Chrome is not installed in your device. So put check for package availability.



回答5:

Google Chrome app Package name is com.android.chrome so ready your Intent URL using below concept

     intent:
    //scan/
    #Intent; 
    package=com.android.chrome; 
    scheme=zxing; 
    end; 


回答6:

This code is to open an android application from your chrome browser. You can check this from this link

  <a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;end"> Take a QR code </a>

I am having another way of opening Chrome browser from your application

private class MyWebViewClient extends WebViewClient {

public boolean shouldOverrideUrlLoading(WebView paramWebView, String paramString) {

   String url = Uri.parse(paramString);
   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);
   }
  }
}