package com.rapidftr; import com.rapidftr.controllers.internal.ControllerFactory; import com.rapidftr.controllers.internal.Dispatcher; import com.rapidftr.screens.internal.UiStack; import com.rapidftr.utilities.Logger; import net.rim.device.api.applicationcontrol.ApplicationPermissions; import net.rim.device.api.applicationcontrol.ApplicationPermissionsManager; import net.rim.device.api.ui.UiApplication; public class Main extends UiApplication { public boolean permissionsGranted = false; public static void main(String[] args) { Main application = new Main(); Logger.register(); application.enterEventDispatcher(); } public Main() { UiStack uiStack = new UiStack(this); int[] requiredPermissions = new int[]{ ApplicationPermissions.PERMISSION_INPUT_SIMULATION, ApplicationPermissions.PERMISSION_FILE_API, ApplicationPermissions.PERMISSION_RECORDING, ApplicationPermissions.PERMISSION_PHONE }; this.permissionsGranted = makePermissionsRequest(requiredPermissions); ControllerFactory controllerFactory = new ControllerFactory(uiStack); Dispatcher dispatcher = new Dispatcher(controllerFactory); dispatcher.homeScreen(); } private boolean makePermissionsRequest(int[] requiredPermissions) { ApplicationPermissionsManager applicationPermissionsManager = ApplicationPermissionsManager.getInstance(); ApplicationPermissions currentPermissions = applicationPermissionsManager.getApplicationPermissions(); ApplicationPermissions permissionsToRequest = new ApplicationPermissions(); for (int i = 0; i < requiredPermissions.length; i++) { int permission = requiredPermissions[i]; if (currentPermissions.getPermission(permission) != ApplicationPermissions.VALUE_ALLOW) permissionsToRequest.addPermission(permission); } if (permissionsToRequest.getPermissionKeys().length > 0) return applicationPermissionsManager.invokePermissionsRequest(permissionsToRequest); return true; } }