BlackBerry Forums Support Community

BlackBerry Forums Support Community (http://www.blackberryforums.com/)
-   Developer Forum (http://www.blackberryforums.com/developer-forum/)
-   -   Hi, Blackberry JDE provides an option for making your application Auto-run on start (http://www.blackberryforums.com/developer-forum/179593-hi-blackberry-jde-provides-option-making-your-application-auto-run-start.html)

jobincantony 03-05-2009 08:18 AM

Hi, Blackberry JDE provides an option for making your application Auto-run on start
 
Hi,

Blackberry JDE provides an option for making your application Auto-run on startup. But surprisingly these applications will auto-run only after hard reset (Alt + cap + Del or battery pull-up).

But for a user perspective the application will restart on Soft reset too (turn off and turn on by pressing power button).

I have faced lot of issues for making a CLDC application auto-run in all the above cases and make the auto-run option is user defined.

Now I have successfully implemented this and tested with OS versions 4.0.2 to 4.6.

I have made a monitor application with my Main application to do the Soft reset activity.

The monitor application is a CLDC application which extends the Application class and implements the SystemListener (for monitoring the powerUp() after reset) and GlobalEvent Listener (for closing the monitor application).

Upon exiting from my main application I will check for Auto-run option enabled and if yes I will start the monitor application before exiting from mainApp. The monitor application will monitor the powerUp() status after reset and will start the MainApplication.

Main application will close the monitor application by posting a globalevent to monitor application.

The monitor application is a system module. So there is no ICON for it and we can add the .cod file of the application as a dependent module with our main application. The size of the monitor application is also very less (2k).

This approach may help someone wants to make their CLDC application auto-run in all the scenarios.

jobincantony 03-05-2009 08:21 AM

Steps

1. Create your main UI CLDC application, say MySampleApp. Select Properties -> Application then select the
Options Auto-run on startup (This will make your application auto-run on hard reset) and System module (No entry point from Icon).

2. Add a GUI option for enable/ disable the autorun option in your main project( MySampleApp).

3. Create a persistant store for storing the status of auto-run option.

4. Create an alternate entry point for your application.( Create a new project , say MySampleAppAlt . Go to Properties-> Application then select project type xxx8220;Alternate CLDC application entry pointxxx8221; and Select xxx8220;MySampleAppxxx8221; as Alternate entry point for: . Add an argument say xxx8220;fromGUIixxx8221; to arguments passed to option.)

5. Add your application Icon file in MySampleAppAlt project and set as application Icon.

6. Create a dummy or monitor Say xxx8220;SampleAppMonitorxxx8221; CLDC application with SystemModule option selected ( This will remove the default Icon ) which extends Application and implements GlobalEvent Listener and SystemListener interfaces.

7. Override the PowerUp() method of SystemListener with this code

Code:

  int modHandle =  CodeModuleManager.getModuleHandle("MySampleApp ");
ApplicationDescriptor[] apDes = CodeModuleManager.getApplicationDescriptors(modHandle);
            ApplicationManager.getApplicationManager().runApplication(apDes[0]);


8. Override the eventOccurred () method of SystemListener with this code

Code:

if (guid == 0x12345678)
        {
            System.exit(0);
        }

9. Change your exitApplication() ( your exit point of main application ie; MySampleApp) or onClose() to start SampleAppMonitor upon exiting from your application.


Code:

If(AutoRun) // store the status of user selection in AutoRun variable
{
int modHandle = CodeModuleManager.getModuleHandle("SampleAppMonitor ");
ApplicationDescriptor[] apDes = CodeModuleManager.getApplicationDescriptors(modHandle);
ApplicationManager.getApplicationManager().runApplication(apDes[0]);
}

10. In public static void main(String[] args) of MySampleApp, get the status of Auto-run from persistant store and say it is boolean AutoRun. Add

Code:

if (args != null && args.length > 0 && args[0].equals("FromGUI"))
      {
            dosStartUpProcess();// continue with your application. Entry from alternate entry point.             
      }
else if( false == AutoRun) // hard Reset and  autorun option disabled by user.
{
 System.exit(1);
}

11. Post a global event from your main application ( MySampleApp) to close the SampleAppMonitor. You can post this event from main just after enter your main application

/
Code:

/for closing  SampleAppMonitor application
                ApplicationManager appMgr = ApplicationManager.getApplicationManager();
                int moduleHandle = CodeModuleManager.getModuleHandle("SampleAppMonitor ");     
                ApplicationDescriptor[] appDes = CodeModuleManager.getApplicationDescriptors(moduleHandle);         
                int processId = appMgr.getProcessId(appDes[0]);
                appMgr.postGlobalEvent(processId, 0x12345678, 0, 0,null,null);



All times are GMT -5. The time now is 08:03 AM.

Powered by vBulletin® Version 3.6.12
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.