啓動應用程序
這裏將介紹兩種在BlackBerry中啓動應用程序的方法。
(1)使用Invoke:
爲啓動一個應用程序,開發者可以調用帶有合適常量和ApplicationArguments 子類的對象的Invoke.invokeApplication(int, ApplicationArguments)方法。使用這種方法將導致一個處理上下文的轉化,當BlackBerry程序啓動時,你的應用程序將失去控制,在啓動的應用程序對話中止時,內容可能不會返回給你的應用程序。
這種方法只能打開BlackBerry自帶的應用程序,因爲invokeApplication中的int參數代表的是應用程序的類型,這些類型已經在API中定義好了,開發者只能打開在API中有定義的那些應用程序。如,打開電話程序的示例代碼是:
Invoke.invokeApplication( Invoke.APP_TYPE_PHONE, new PhoneArguments( PhoneArguments.ARG_CALL, "555-5555" ) )
更詳細的內容可以參看API。
(2)使用ApplicationManager:
net.rim.device.api.system.ApplicationManager類使應用程序可以和應用程序管理器交互,並完成下面的操作:與進程交互,例如獲取前臺應用程序的ID;發送一個全局事件給系統;鎖住或解鎖BlackBerry設備,或判斷BlackBerry設備是否鎖住;立即運行一個程序,或者在一個特定的時間運行應用程序。
要運行一個應用程序,首先要獲得ApplicationManager的實例:
ApplicationManager manager = ApplicationManager.getApplicationManager();
接着要獲得程序的描述信息:
pplicationDescriptor template = ApplicationDescriptor.currentApplicationDescriptor();
然後,根據原來的程序描述信息來創建新的描述信息:
String[] args = { "gui" };
ApplicationDescriptor newdescriptor = new ApplicationDescriptor(template, args);
最後,根據新的參數來運行改程序:
try {
appmanager.runApplication(newdescriptor);
}
catch(ApplicationManagerException) {
// Handle the error.
}
這種方法由於沒辦法獲得其他應用程序的ApplicationDescriptor,既程序描述信息,所以只能是用另一些參數來啓動程序。BlackBerry支持多個進入點,可以用參數來區別這些進入點,用不同的進入點進入,系統中會有兩個進程,他們之間的數據共享也只能通過進程間的方式。