Windows 11: Notifications vanishes after few seconds.

Davide Perini perini.davide at dpsoftware.org
Fri Jan 12 11:40:09 UTC 2024


I wrote to Microsoft and they suggested to use the New APIs 
(ToastNotification) meant for the purpose

https://learn.microsoft.com/en-us/windows/apps/design/shell/tiles-and-notifications/toast-notifications-overview 

https://learn.microsoft.com/en-us/windows/apps/design/shell/tiles-and-notifications/send-local-toast-desktop-cpp-wrl

Shell_NotifyIcon API is clearly unsupported after 25/30 years on a 
modern OS.

If you are a Java programmer, you can't send an OS notification.

OS Notifications are very crucial to most apps this days,
I can't imagine how Java can overlook it.

Since you don't accept it as a bug (Oracle is closing all the bug 
reports from people on this),
I opened a feature request on this in the hope that someone wise will 
look at it.

Kind Regards,
Davide


Il 08/01/2024 22:05, Davide Perini ha scritto:
> Thanks for the explanation Aleksei
> but can you explain me what is the OpenJDK direction please?
>
> Suppose that you have a feature like this one, a simple notifications.
> Java worked well with Windows notifications until Win10,
> then Microsoft changed the APIs for notifications in Win11.
>
> Isn't OpenJDK supposed to adapt to the new Windows APIs?
>
> Does OpenJDK supports Windows 11 or not?
>
> It's a little "weird" to close an issue by saying that Java uses the 
> same way to do the same thing since Windows 95
> and that it's a Microsoft problem if they changed the way to send 
> notifications to the OS.
>
> Java should support Microsoft Windows, it isn't Microsoft Windows that 
> should support Java,
> isn't it?
>
> Other languages adapted their APIs for the new notifications system, 
> like everyone should expect from a modern language,
> after 2 years from the release of Win 11,
> Oracle says that it worked since Windows 95, so it is ok to have a 
> broken API in JDK because it worked before, they are the ones who 
> broke it (Microsoft).
>
> Does Java offers a correct way to send Notifications in Win10? Answer: Yes
> Does Java offers a correct way to send Notifications in Win11? Answer: No
> Does other languages offers a correct way to send Notifications in 
> Win11? Answer: Yes
> Does current JDK APIs works as expected in Win11?
> Answer: No because JDK uses an old API born with Win95 (30 years ago + 
> or -) with a new OS born in 2021, this results in an unexcpected 
> behaviour that doesn't work as supposed initially by the API.
>
> In the bug report you wrote:
> "I can't see what Java can do to change the behaviour."
>
> The answer is:
> "By implementing the correct API for the correct OS".
>
>
> Java is currently not able to correctly send a Notification in Windows 11.
>
>
> I see a bug there, if you don't see it,
> I'm pretty worried of the new JDK direction.
>
> Thanks
> Davide
>
>
> Il 08/01/2024 20:55, Aleksei Ivanov ha scritto:
>> On 2024-01-08 19:30, Davide Perini wrote:
>>> Thanks for the Answer Aleksei,
>>> I have a lot of Windows apps that uses notifications without problems.
>>>
>>> even a simple python program like this works correctly.
>>> from win11toastimport toast
>>>
>>> toast('Hello','Click to run python script')
>>
>> Python could use newer WinRT APIs [6], in particular 
>> ToastNotification class [7] which provide richer interface for the 
>> toast notifications. The package name ‘toast’ hints it uses the newer 
>> APIs.
>>
>>> is it possible that Microsoft changed the way how to create 
>>> Notifications in Windows 11 and Java still uses the way it worked in 
>>> Windows 7?
>>
>> Perhaps, Microsoft changed how they handle notifications in Windows 
>> 11. In Windows 10, the notifications created with a Java app remain 
>> in Action / Notification centre.
>>
>> Java uses Shell_NotifyIcon [8] function that has been available since 
>> Windows 95.
>>
>> -- 
>> Regards,
>> Alexey
>>
>> [6] https://learn.microsoft.com/en-us/windows/uwp/cpp-and-winrt-apis/
>> [7] 
>> https://learn.microsoft.com/en-us/uwp/api/windows.ui.notifications.toastnotification?view=winrt-22621
>> [8] 
>> https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shell_notifyiconw
>>
>>>
>>> Thanks
>>> Davide
>>>
>>>
>>>
>>> Il 08/01/2024 17:59, Aleksei Ivanov ha scritto:
>>>> Hi Davide,
>>>>
>>>> The bug that you reported has been moved to JDK project in JBS, you 
>>>> can view it as JDK-8315647 [1]. You should've received a link to it.
>>>>
>>>>> Is there a way to workaround this JDK bug?
>>>>> I opened a bug report months ago but no one answered. 
>>>>
>>>> What kind of answer did you expect to receive?
>>>>
>>>> You already asked this question on this mailing list in August [2]. 
>>>> I replied to your question [3]. Nothing has changed since August. 
>>>> It is not a bug in Java because a native Win32 app behaves the same 
>>>> way.
>>>>
>>>> I compiled and tested the sample [4], it behaves in Windows 11 as 
>>>> Java does: the displayed balloon notification does not go to 
>>>> notification centre. However, if I open notification centre while 
>>>> the balloon is displayed, it remains there. If I disable "Show 
>>>> notification banners" and leave "Show notifications in notification 
>>>> centre" enabled, the balloon goes directly to notification centre 
>>>> without displaying a banner.
>>>>
>>>> You can compile and test the sample too:
>>>>
>>>> git clone --filter=blob:none --sparse 
>>>> https://github.com/microsoft/Windows-classic-samples.git 
>>>> windows-samples
>>>> cd windows-samples
>>>> git sparse-checkout add 
>>>> Samples/Win7Samples/winui/shell/appshellintegration/NotificationIcon
>>>>
>>>> Navigate to the NotificationIcon folder and open 
>>>> NotificationIcon.sln in Visual Studio to compile and run it.
>>>>
>>>> If required, I can attach the compiled version of the application.
>>>>
>>>>
>>>> I have closed JDK-8315647 as duplicate of JDK-8310352 [5].
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/client-libs-dev/attachments/20240112/ef8e3675/attachment-0001.htm>


More information about the client-libs-dev mailing list