Difference in SMS and PushRegistry behavior in Series 40 and S60
This article explains the differences between SMS and PushRegistry behaviour in Series 40 and Symbian.
When a MIDlet registers SMS connections with PushRegistry, the behaviour is different in Series 40 and S60.
The problem can reproduced by using the Nokia Developer example MIDP 2.0: Wireless Messaging API Example.
It is possible to initiate a MIDlet (WMAExample.zip in this case) with an SMS and retrieve its contents in many phone models, such as the Nokia 6101 (Series 40) and many other MIDP 2.0 models, but the same application cannot retrieve the SMS content if you try to run it on an S60 device (such as the Nokia 6600 and the Nokia N90) .
Using PushRegistry.listConnections() prior to the call to the listen() method solves the problem. This should be the correct behaviour, as this kind of code is the standard method for all types of PushRegistry-activated MIDlets to check the way they were started.
Series 40 may have a different implementation behaviour as it is a different operating system; some significant differences are known, especially for the PushRegistry.
In Series 40, notifyIncomingMessage method is called when the MIDlet starts up, so the developer can retrieve the content of the message within this method. In S60, this method is not called, and the MIDlet has to use PushRegistry.listConnections(true) within startApp() method in order to perform the same operation.
WMAExample.zip is an Eclipse project with an updated WMAExample.java, adding to the startApp() method the needed check for connections and messages that may be pending in the PushRegistry.