在Google Chrome中启动任何网站链接的目的是什么?

时间:2015-03-25 07:54:52

标签: android google-chrome android-intent android-webview

您好我想在用户点击特定链接时从我的应用webview打开Chrome应用中的网站。我认为这是可能的https://developer.chrome.com/multidevice/android/intents,这是针对zxing应用程序的,而不是谷歌浏览器。

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

我想要谷歌Chrome的语法相同。目前我在webview中打开链接,点击链接我想指定一个像zxing那样的chrome意图。

换句话说, 我有一个webview,我打开了一个特定的URL然后用户点击&#34; XYZ&#34;或者在webview中的某些内容那么它应该打开谷歌浏览器。所以对于这个我将在html中添加一些chrome intent标签我正在寻找的语法 -

如果您知道打开Goog​​le Chrome任何超链接的语法,请分享。

提前致谢。

6 个答案:

答案 0 :(得分:23)

您似乎正在寻找新的Android Intents链接,该链接将为设备创建链接的明确意图。

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

适合我。 所以

<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"> 

将带您进入Chrome中的这个问题。 请注意,该方案是单独指定的,因此如果要启动https链接,则必须将方案更改为scheme = https

但正如大家所说的那样,明确的Chrome意图是一个非Android的事情。更好的方法是指定ACTION_VIEW操作,如下所示:

<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;">

来源:The same page you linked

谢谢,我今天学到了一些东西!

答案 1 :(得分:6)

下面的代码在webview中创建启动网址,包括Android中的intent://网址。

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

答案 2 :(得分:1)

使用此:

String url = "http://www.example.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
希望这会有所帮助..

答案 3 :(得分:1)

我已经使用Nexus 6测试了以下代码,安装了Chrome和Mozilaa,效果很好,

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

如果您的设备中未安装Chrome,则会出错。所以检查包装的可用性。

答案 4 :(得分:0)

Google Chrome应用包名称为com.android.chrome,因此请使用以下概念准备好您的Intent网址

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

答案 5 :(得分:0)

此代码用于从Chrome浏览器打开Android应用程序。您可以通过此link

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

我正在使用另一种方式从您的应用中打开 Chrome 浏览器

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