以编程方式重新启动Blackberry

时间:2011-10-10 06:02:09

标签: blackberry restart

我想制作可以自行重启黑莓的Blackberry应用程序(完成一些任务后)

例如,我使用虚拟

制作这个小应用程序

dummy:(在它成为dummy.cod之后,我将其移动到res文件夹并将其重命名为dummy,而不再使用.cod)

public class Dummy extends Application{  

    public static void main( String[] args ) {  
        new Dummy().enterEventDispatcher();  
    }

    public Dummy(){
    }
}    

应用示例代码: (我的应用程序的描述:只有一个按钮来调用重置方法)

public void reset() throws Exception {
    // load the dummy cod file
    byte[] cod = IOUtilities.streamToBytes(getClass().getResourceAsStream("/dummy"));

            // create new module
    int newHandle = CodeModuleManager.createNewModule(cod.length, cod, cod.length); 

    // install the module
    if (newHandle != 0) {
        int savecode = CodeModuleManager.saveNewModule(newHandle, true);
        if (savecode == CodeModuleManager.CMM_OK_MODULE_OVERWRITTEN)
            Logger.debug("The operation completed successfully; a module was overwritten and marked for deletion in the process.");
        // now run the dummy application in background
        ApplicationDescriptor appDesc = CodeModuleManager.getApplicationDescriptors(newHandle)[0];
        ApplicationManager.getApplicationManager().runApplication(appDesc, false);
        CodeModuleManager.deleteModuleEx(newHandle, true);
    }

    // restart the blackberry if required
    CodeModuleManager.promptForResetIfRequired(); 

}

当我将代码运行到Simulator(SimPackage 6.0.0.587 - 9780& SimPackage 5.0.0.977 - 9300)时,代码运行良好,它显示“立即重启/稍后重启”的消息。

但是当我将代码加载到真实设备9780 OS 6.0.0.570和设备9300 OS 5.0.0.846时,代码仍然无效。

知道为什么会这样吗?或者我只是犯了一个简单而致命的错误?

谢谢:)

1 个答案:

答案 0 :(得分:0)

您的代码是正确的,但您需要签署您的代码才能在真实设备上执行 CodeModuleManager.deleteModuleEx

有关详细信息,请参阅CodeModuleManager documentation