常用代码块:java使用系统浏览器打开url
方法一:用于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相关推荐
- vs2015常用代码块与自定义代码块
常用代码块 代码段名 描 述 #if 该代码段用#if和#endif命令围绕代码 #region 该代码段用#region和#endregion命令围绕代码 ~ 该代码段插入一个析构函数 att ...
- C#操作IE浏览器(打开url、获取浏览器地址栏的地址、模拟百度搜索)
下面的代码参考 https://www.cnblogs.com/kissdodog/p/3725774.html,非我原创,所以就标为转载 注意:下面的方法只适用于系统自带的IE浏览器,其它浏览器不适 ...
- 大象跳转:解析微信内自动跳转浏览器打开URL网页的操作步骤
现如今微信对第三方app下载链接的拦截是越来越严格了,下载链接在微信中分享转发经常会被拦截,一旦被拦截用户就只能复制链接手动打开浏览器粘贴才能访问,如此给用户带来的体验台差,用户量无法有效地累积起来, ...
- 怎样一键生成微信跳转链接,可以自动跳转浏览器打开URL网页
现如今微信对第三方app下载链接的拦截是越来越严格了,下载链接在微信中分享转发经常会被拦截,一旦被拦截用户就只能复制链接手动打开浏览器粘贴才能访问,如此给用户带来的体验台差,用户量无法有效地累积起来, ...
- Python3常用代码块汇总
本文章主要用于平时Python3学习和使用中积累的比较常用的代码块.代码都是经过验证可行的. 一.基本数据类型 字符串 字符串常识: 可以利用反斜杠(\)对双引号转义:",或者用单引号引起这 ...
- CAA二次开发常用代码块
概述 本文主要写了CAA二次开发常用的代码块.. 逻辑结构 Session->Document-> CATIDftDrawing ->pi p指针 i 结构 pi接口指针,pi指针一 ...
- python在不同系统代码区别_python不同系统中打开方法
在Linux.Windows.Mac OS的命令行窗口或Shell窗口,执行python命令,启动Python交互式解释器.交互式解释器会等待用户输入Python语句.输入Python语句并回车,解释 ...
- IDEA-自定义常用代码块
前言.如何设置 设置使用的地方 1.设置类注释模板代码 /** * @author: lujie * @create: $date$ * @description: $description$ **/ ...
- android用浏览器打开url地址,Android 在浏览器中打开URL
示例 使用默认浏览器打开 本示例说明如何在内置Web浏览器中而不是在应用程序中以编程方式打开URL.这使您的应用程序可以打开网页,而无需INTERNET在清单文件中包含权限. public void ...
最新文章
- Codeforces1045I
- SQL SERVER重置自动编号列(标识列)
- Luogu P3521 [POI2011]ROT-Tree Rotations
- dedecms 后台 菜单点击后打开的慢
- 说说博客园的“关注”与“网摘”
- Spring Boot Serverless 实战系列“架构篇”首发 | 光速入门函数计算
- Android 学习思维导图
- 按ASCII码给json对象排序
- MQTT X Web:在线的 MQTT 5.0 客户端工具
- 贪心算法 Y 美味酸奶
- JetBrain系列好用的插件
- 讯飞AIUI语音初体验
- PgSql时间格式转换
- Unicable命令设置
- 弹性和瞬态故障处理库Polly之重试策略
- 用Processing制作小游戏1
- EXCEL中条件格式中如果为真则停止的设置
- 量化分析师的Python日记-CSDN公开课-专题视频课程
- rsi指标如何计算怎样分析RSI指标
- Jexus V5.0 正式发布
热门文章
- [COURSE_PTHE] 4. 枚举
- Android ScrollView嵌套ScrollView滚动的问题解决办法
- C#使用System.Data.SQLite操作SQLite
- hdu 1133 Buy the Ticket(递推+精度精算)
- VC++2012编程演练数据结构《31》狄杰斯特拉算法
- [导入]XI 常用的URL
- ★LeetCode(448)——找到所有数组中消失的数字(JavaScript)
- react-native gradle
- 六级词汇打卡第三天(三)
- 一次性存入多少钱就可以有资格跟银行商谈利息了?