java - 无法在 jxbrowser-java 中设置地理定位权限
问题描述
我有一个使用jxbrowser显示用户位置的 java 应用程序。(我们在浏览器控制台中打印位置并在 java 中使用控制台侦听器获取它)
在我的getLocation.java中:
public static void main(String[] args) {
final Browser browser = new Browser();
BrowserView browserView = new BrowserView(browser);
JFrame frame = new JFrame("as");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(browserView, BorderLayout.CENTER);
frame.setSize(900, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
browser.setPermissionHandler(new PermissionHandler() {
@Override
public PermissionStatus onRequestPermission(PermissionRequest request) {
if (request.getPermissionType() == PermissionType.GEOLOCATION) {
return PermissionStatus.GRANTED;
}
return PermissionStatus.DENIED;
}
});
browser.addConsoleListener(new ConsoleListener() {
@Override
public void onMessage(ConsoleEvent message) {
System.out.println(message.getMessage());
}
});
browser.loadURL("C://Users/aa/Desktop/Advance Java Projects/Snap/src/views/map/getlocation.html");
}
在我的getlocation.html中:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
</style>
</head>
<body>
<script>
getLocation()
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
console.log("poof browser!");
}
}
function showPosition(position) {
console.log(position.coords.latitude);
console.log(position.coords.longitude);
}
</script>
</body>
</html>
但是当我运行我的应用程序时,我没有任何反应!!!!
解决方案
由于 Chromium 50 及更高版本的安全限制,地理定位不适用于file:///
URI。您必须将与 Geolocation API 配合使用的网页放在 Web 服务器上,并通过 HTTPS 协议访问该网页。否则它将无法正常工作。
推荐阅读
- python - '\t' 在 python 正则表达式对象中匹配什么?
- javascript - 将 Bootstrap 添加到 Gatsby 会产生“未捕获的类型错误:无法读取未定义的属性 'fn'”
- android - 安装 Scarlet 时重复依赖项
- mysql - 查询 bash 脚本中的 Mysql 错误处理
- python - 如何在循环中更新多个 Numpy 数组
- msal - Microsoft 身份验证库 (MSAL) loginPopup 未正确关闭自身
- android - Flutter InAppPurchase 产品未在发布版本中显示
- wordpress - WordPress 徽标网址
- python - 在 Cython 中制作一个包含 Python 字符串的向量
- c++ - 数据对齐:限制内存地址为数据类型大小的倍数的原因