首页 > 解决方案 > 无法在 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>

但是当我运行我的应用程序时,我没有任何反应!!!!

标签: javaswinggoogle-mapsgeolocationjxbrowser

解决方案


由于 Chromium 50 及更高版本的安全限制,地理定位不适用于file:///URI。您必须将与 Geolocation API 配合使用的网页放在 Web 服务器上,并通过 HTTPS 协议访问该网页。否则它将无法正常工作。


推荐阅读