Как включить уведомление на рабочем столе? jxBrowser

Как включить уведомление на рабочем столе? Я ищу по всей документации. не нашел ничего о разрешениях или уведомлениях

Спасибо Целон


person Tzelon    schedule 10.01.2017    source источник


Ответы (1)


Вот пример, который показывает, как использовать JxBrowser Notifications API для отображения уведомлений на рабочем столе:

import com.teamdev.jxbrowser.chromium.*;
import com.teamdev.jxbrowser.chromium.events.NotificationEvent;
import com.teamdev.jxbrowser.chromium.events.NotificationListener;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;

import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * Demonstrates how to handle HTML5 Desktop Notifications.
 */
public class NotificationSample {
    public static void main(String[] args) {
        Browser browser = new Browser();
        BrowserView view = new BrowserView(browser);

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.add(view, BorderLayout.CENTER);
        frame.setSize(700, 500);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

        // Grant notification permission if it's necessary
        browser.setPermissionHandler(new PermissionHandler() {
            @Override
            public PermissionStatus onRequestPermission(PermissionRequest request) {
                if (request.getPermissionType() == PermissionType.NOTIFICATIONS) {
                    return PermissionStatus.GRANTED;
                }
                return PermissionStatus.DENIED;
            }
        });

        // Display your own notification GUI
        BrowserContext browserContext = browser.getContext();
        NotificationService notificationService = browserContext.getNotificationService();
        notificationService.setNotificationHandler(new NotificationHandler() {
            @Override
            public void onShowNotification(NotificationEvent event) {
                showNotification(event.getNotification());
            }
        });

        browser.loadURL("notifications.html");
    }

    private static void showNotification(final Notification notification) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                final JFrame frame = new JFrame(notification.getTitle());
                frame.setAlwaysOnTop(true);
                JLabel messageLabel = new JLabel(notification.getMessage());
                messageLabel.setBorder(BorderFactory.createEmptyBorder(15, 15, 15, 15));
                frame.add(messageLabel, BorderLayout.CENTER);
                frame.setMinimumSize(new Dimension(300, 100));
                frame.pack();
                frame.setLocationByPlatform(true);
                frame.setVisible(true);
                frame.addWindowListener(new WindowAdapter() {
                    @Override
                    public void windowClosing(WindowEvent e) {
                        notification.close();
                    }
                });

                notification.addNotificationListener(new NotificationListener() {
                    @Override
                    public void onClose(NotificationEvent event) {
                        SwingUtilities.invokeLater(new Runnable() {
                            @Override
                            public void run() {
                                frame.setVisible(false);
                                frame.dispose();
                            }
                        });
                    }
                });
            }
        });
    }
}
person Vladimir    schedule 11.01.2017
comment
в jxbrowser нет api, такого как setPermissionHandler и setNotificationHandler и getNotificationService (), какую версию Jxbrowser вы используете - person Md Ayub Ali Sarker; 08.10.2017
comment
Согласно примечаниям к выпуску этот API был добавлен в 6.8: jxbrowser.support.teamdev.com / поддержка / обсуждения / форумы / - person Vladimir; 09.10.2017
comment
Похоже, этот код больше не подходит для JxBrowser. @Vladimir у вас есть обновленный пример? - person MarkNS; 02.09.2019