无法在 jxbrowser 中设置地理定位权限- java
can not set gelocation permission in jxbrowser- java
我有一个 java 应用程序,它 通过 jxbrowser 显示用户位置。
(我们在浏览器控制台中打印位置并在 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 及更高版本中的 security 限制,地理定位不适用于 file:///
URI。您必须将与 Geolocation API 配合使用的网页放在网络服务器上,并通过 HTTPS 协议访问该网页。不然不行。
我有一个 java 应用程序,它 通过 jxbrowser 显示用户位置。 (我们在浏览器控制台中打印位置并在 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 及更高版本中的 security 限制,地理定位不适用于 file:///
URI。您必须将与 Geolocation API 配合使用的网页放在网络服务器上,并通过 HTTPS 协议访问该网页。不然不行。