方法一:用于windows

try {
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler "+url);
} catch (IOException e1) {
e1.printStackTrace();
}

方法二:通用,但会可能会抛出java.net.URISyntaxException异常。

try {
// 创建一个URI实例,注意不是URL url格式问题可能会有异常这里
java.net.URI uri = java.net.URI.create(url);
// 获取当前系统桌面扩展
java.awt.Desktop dp = java.awt.Desktop.getDesktop();
// 判断系统桌面是否支持要执行的功能
if (dp.isSupported(java.awt.Desktop.Action.BROWSE)) {
// 获取系统默认浏览器打开链接
dp.browse(uri);
}
} catch (java.lang.NullPointerException e) {
// 此为uri为空时抛出异常
} catch (Exception e) {
e.printStackTrace();
// 此为无法获取系统默认浏览器
}

下边这个方法比较保险:

String url = "https://127.0.0.1:8834";
if (!url.startsWith("http")) {
url = "http://" + url;
}

try {
// 创建一个URI实例,注意不是URL
java.net.URI uri = java.net.URI.create(url);
// 获取当前系统桌面扩展
java.awt.Desktop dp = java.awt.Desktop.getDesktop();
// 判断系统桌面是否支持要执行的功能
if (dp.isSupported(java.awt.Desktop.Action.BROWSE)) {
// 获取系统默认浏览器打开链接
dp.browse(uri);
}
} catch (IllegalArgumentException e) {
e.printStackTrace();

try {
Class<URI> clazz = URI.class;
Field path = clazz.getDeclaredField("path");
Field schemeSpecificPart = clazz.getDeclaredField("schemeSpecificPart");
Field string = clazz.getDeclaredField("string");
path.setAccessible(true);
schemeSpecificPart.setAccessible(true);
string.setAccessible(true);

int i = url.indexOf("//");
String strSchemeSpecificPart = url.substring(i);

String s = strSchemeSpecificPart.substring(2);
int j = s.indexOf("/");
String strpath = s.substring(j);

String scheme = url.substring(0, i + 2);
String host = s.substring(0, j);
host = host.trim();
URI uri = URI.create(scheme + host);

path.set(uri, strpath);
schemeSpecificPart.set(uri, strSchemeSpecificPart);
string.set(uri, url);
java.awt.Desktop dp = java.awt.Desktop.getDesktop();
// 判断系统桌面是否支持要执行的功能
if (dp.isSupported(java.awt.Desktop.Action.BROWSE)) {
// 获取系统默认浏览器打开链接
dp.browse(uri);
}

} catch (Exception ee) {

}

} catch (java.lang.NullPointerException e) {
// 此为uri为空时抛出异常
} catch (java.io.IOException e) {
// 此为无法获取系统默认浏览器
}

转载于:https://www.cnblogs.com/SEC-fsq/p/5698306.html

常用代码块:java使用系统浏览器打开url相关推荐

  1. vs2015常用代码块与自定义代码块

    常用代码块 代码段名 描    述 #if 该代码段用#if和#endif命令围绕代码 #region 该代码段用#region和#endregion命令围绕代码 ~ 该代码段插入一个析构函数 att ...

  2. C#操作IE浏览器(打开url、获取浏览器地址栏的地址、模拟百度搜索)

    下面的代码参考 https://www.cnblogs.com/kissdodog/p/3725774.html,非我原创,所以就标为转载 注意:下面的方法只适用于系统自带的IE浏览器,其它浏览器不适 ...

  3. 大象跳转:解析微信内自动跳转浏览器打开URL网页的操作步骤

    现如今微信对第三方app下载链接的拦截是越来越严格了,下载链接在微信中分享转发经常会被拦截,一旦被拦截用户就只能复制链接手动打开浏览器粘贴才能访问,如此给用户带来的体验台差,用户量无法有效地累积起来, ...

  4. 怎样一键生成微信跳转链接,可以自动跳转浏览器打开URL网页

    现如今微信对第三方app下载链接的拦截是越来越严格了,下载链接在微信中分享转发经常会被拦截,一旦被拦截用户就只能复制链接手动打开浏览器粘贴才能访问,如此给用户带来的体验台差,用户量无法有效地累积起来, ...

  5. Python3常用代码块汇总

    本文章主要用于平时Python3学习和使用中积累的比较常用的代码块.代码都是经过验证可行的. 一.基本数据类型 字符串 字符串常识: 可以利用反斜杠(\)对双引号转义:",或者用单引号引起这 ...

  6. CAA二次开发常用代码块

    概述 本文主要写了CAA二次开发常用的代码块.. 逻辑结构 Session->Document-> CATIDftDrawing ->pi p指针 i 结构 pi接口指针,pi指针一 ...

  7. python在不同系统代码区别_python不同系统中打开方法

    在Linux.Windows.Mac OS的命令行窗口或Shell窗口,执行python命令,启动Python交互式解释器.交互式解释器会等待用户输入Python语句.输入Python语句并回车,解释 ...

  8. IDEA-自定义常用代码块

    前言.如何设置 设置使用的地方 1.设置类注释模板代码 /** * @author: lujie * @create: $date$ * @description: $description$ **/ ...

  9. android用浏览器打开url地址,Android 在浏览器中打开URL

    示例 使用默认浏览器打开 本示例说明如何在内置Web浏览器中而不是在应用程序中以编程方式打开URL.这使您的应用程序可以打开网页,而无需INTERNET在清单文件中包含权限. public void  ...

最新文章

  1. Codeforces1045I
  2. SQL SERVER重置自动编号列(标识列)
  3. Luogu P3521 [POI2011]ROT-Tree Rotations
  4. dedecms 后台 菜单点击后打开的慢
  5. 说说博客园的“关注”与“网摘”
  6. Spring Boot Serverless 实战系列“架构篇”首发 | 光速入门函数计算
  7. Android 学习思维导图
  8. 按ASCII码给json对象排序
  9. MQTT X Web:在线的 MQTT 5.0 客户端工具
  10. 贪心算法 Y 美味酸奶
  11. JetBrain系列好用的插件
  12. 讯飞AIUI语音初体验
  13. PgSql时间格式转换
  14. Unicable命令设置
  15. 弹性和瞬态故障处理库Polly之重试策略
  16. 用Processing制作小游戏1
  17. EXCEL中条件格式中如果为真则停止的设置
  18. 量化分析师的Python日记-CSDN公开课-专题视频课程
  19. rsi指标如何计算怎样分析RSI指标
  20. Jexus V5.0 正式发布

热门文章

  1. [COURSE_PTHE] 4. 枚举
  2. Android ScrollView嵌套ScrollView滚动的问题解决办法
  3. C#使用System.Data.SQLite操作SQLite
  4. hdu 1133 Buy the Ticket(递推+精度精算)
  5. VC++2012编程演练数据结构《31》狄杰斯特拉算法
  6. [导入]XI 常用的URL
  7. ★LeetCode(448)——找到所有数组中消失的数字(JavaScript)
  8. react-native gradle
  9. 六级词汇打卡第三天(三)
  10. 一次性存入多少钱就可以有资格跟银行商谈利息了?