首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法在Android中强制打开链接才能在Chrome中打开?

问有没有办法在Android中强制打开链接才能在Chrome中打开?
EN

Stack Overflow用户
提问于 2012-08-18 05:29:25
回答 10查看 108.2K关注 0票数 76

我目前正在测试一个使用大量jQuery动画开发的web应用程序,我们注意到内置web浏览器的性能非常差。在Chrome上测试时,web应用程序的性能快得令人难以置信。我只是想知道是否有任何类型的脚本可以强制在Chrome for Android中打开一个链接,就像在iOS中一样。

EN

回答 10

Stack Overflow用户

发布于 2015-01-05 21:02:35

实现这一点的一种更好的方法是照常使用Intent.ACTION_VIEW intent,但将com.android.chrome包添加到intent中。无论Chrome是否为默认浏览器,此操作都有效,并确保与用户从选择器列表中选择Chrome时的行为完全相同。

代码语言:javascript
复制
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 Kindle中未安装chrome应用程序时打开Amazon默认浏览器

代码语言:javascript
复制
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);
}
票数 84
EN

Stack Overflow用户

发布于 2012-08-18 06:01:58

有两种解决方案。

By package

代码语言:javascript
复制
    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);
    }

由方案提供的

代码语言:javascript
复制
    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
    }

警告!以下技术在最新版本的上不起作用。它在这里作为参考,因为这个解决方案已经存在了一段时间:

代码语言:javascript
复制
    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
    }
票数 52
EN

Stack Overflow用户

发布于 2015-12-28 18:29:01

所有提出的解决方案对我来说都不再有效。感谢@pixelbandito,他为我指明了正确的方向。我在chrome源代码中找到了下一个常量

代码语言:javascript
复制
public static final String GOOGLECHROME_NAVIGATE_PREFIX = "googlechrome://navigate?url=";

接下来的用法是:

代码语言:javascript
复制
 Intent intent = new Intent("android.intent.action.VIEW", Uri.parse("googlechrome://navigate?url=chrome-native://newtab/"));

所以解决方案是(注意url不应该被编码)

代码语言:javascript
复制
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);
    }
}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12013416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档