在安卓系统中有什么方法可以强制打开指向外部浏览器的链接吗



我的应用程序由一个web视图组成,并可以选择注册为链接的处理程序https://example.com/news.

我有一个"在浏览器中打开"按钮,它应该在外部浏览器中打开当前url。

如果我的应用程序被设置为链接的默认处理程序https://example.com/news,则"在浏览器中打开"按钮不提供使用浏览器打开url的选项。相反,我的应用程序会自动打开网址。

我已经看到可以强制应用程序在chorme中打开url,但我想要一个更通用的解决方案,即使chorme被禁用/未安装也能工作。那么,我的问题是,如何使用any或默认浏览器打开url?

"在浏览器中打开"按钮的代码:

if (url != null) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}

您的实现对我来说很好,无论是否安装chrome,您都可以使用它,但您需要检查它是否可解析:

if (url != null) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (sendIntent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
}

如果你想向用户显示浏览器列表以供选择,你可以使用:

Intent sendIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
Intent chooser = Intent.createChooser(sendIntent, "Choose Your Browser");
if (sendIntent.resolveActivity(getPackageManager()) != null) {
startActivity(chooser);
}

如果您的targetSdk为30或以上,也可以查看此文档:https://developer.android.com/training/package-visibility/use-cases

最新更新