BlackBerry手机上,Java编程实现程序中下载并安装多个cod,升级自己

目录:src

说明:根据RIM提供的例子代码,稍作修改:

1 . 判断网络连接情况是否支持Direct连接(原代码是判断 MDS连接情况)

2.  判断网络连接情况是中国移动/中国电信/中国联通以便采取不同的APN cmnet 3gnet或者是使用WAP 2.0连接,根据判断使用对应的网络连接(原代码是使用MDS连接)

3.  去掉原代码的titlebar,原因是BlackBerry SDK 5.0 没有相应的API


目录:build.ota

文件:a.jad    CodeModuleInstallerSample.cod

说明:编译好的安装程序,使用的时候,把jad和cod文件放在apache的网站任意目录下面,手机上即可OTA安装

为方便用户OTA安装,jad文件名字改为 a.jad 


目录:installerSample

下面有三个之目录和一个说明文件,ClorfulTimeExtracted,GooNuu,NetworkSample,applicationList.txt

说明:在程序代码中和次目录下面的多个txt 文件中,hardcode了安装路径指向 http://shanghai.springworks.info/installerSample/applicationList.txt


程序源代码下载猛击这里


测试程序直接下载

 安装后,点击菜单”checkfor update”,等一会,两个程序就安装好了(goonuu,colorfultime)。

注:这两个程序安装后,可以直接点击程序图标运行,不需要重新启动



==================================================================================

后记:

程序A中用API简单的重新安装程序A的cod文件,会出现不提示用户restart机器,用户不拔电池板更新过的程序A不起作用的情况。

那么程序如何升级自己呢 ?方法如下:

step 1: 删除自己!(梅花宝典,欲练神功,引刀自宫)

step 2: 下载新版本的cod文件

step 3: 安装cod文件

原文参考:http://blog.vimviv.com/blackberry/upgrade-application-blackbery/

public void upgrade() {
//Delete it self.
		 int handle = CodeModuleManager.getModuleHandle(moduleName);
		 if (handle != 0) {
		 int success = CodeModuleManager.deleteModuleEx(handle, true);
		 System.out.println("response: " + success);
		 }
// Download new cod files(included sibling files).
		byte[] codBuff = null;
		String[] cod = new String[3];
//assuming that application contents 3 cod files.
		cod[0] = getViaHttp("moduleName");
		cod[1] = getViaHttp("moduleName-1");
		cod[2] = getViaHttp("moduleName-2");
		System.out.println("download complete");
		int newHandle = 0;
		// API REFERENCE:
		// You need to write the data in two separate chunks.
		// The first data chunk must be less thank 64KB in size.
		int MAXAPPEND = 61440; // 1024*60;
		for (int i = 0; i < 3; i++) {
			codBuff = cod[i].getBytes();
			if (codBuff.length > MAXAPPEND) {
				newHandle = CodeModuleManager.createNewModule(codBuff.length,
						codBuff, MAXAPPEND);

				boolean appendSucc = CodeModuleManager.writeNewModule(
						newHandle, MAXAPPEND, codBuff, MAXAPPEND,
						codBuff.length - MAXAPPEND);

				codBuff = null;
			} else {
				newHandle = CodeModuleManager.createNewModule(codBuff.length,
						codBuff, codBuff.length);

			}
//install the module
			if (newHandle != 0) {
				int savecode = CodeModuleManager.saveNewModule(newHandle, true);
				if (savecode == CodeModuleManager.CMM_OK_MODULE_OVERWRITTEN)
					System.out
							.println("The operation completed successfully; a module was overwritten and marked for deletion in the process.");
			}
			System.out.println(i + " module installed");
		}

//restart the blackberry if reuired
		if (CodeModuleManager.isResetRequired())
			CodeModuleManager.promptForResetIfRequired();
	}


你可能感兴趣的:(java,编程,网络,手机,中国电信,BlackBerry)