假设您将文件上传到服务器,其中包含一行:
1.2.3.4
Android 和 BB 的流程类似:
1- 从服务器检索文件。结果可能是一个字节数组。
2- 将其转换为具有正确编码的字符串。如果 txt 仅包含数字和点,则编码并不重要,因为它们是 ASCII 字符,并且 ASCII 字符与大多数常用的默认编码(如 UTF-8 和 ISO-8859)兼容。所以我们可以在不处理编码的情况下实例化字符串,就像这样:String fileContent = new String(byte[] downloadedData)。否则,请确保您事先知道 txt 文件编码并使用该编码实例化字符串。
3- 使用点作为分隔符拆分字符串。在 Android 中,您可以这样做:String[] splitted = String.split(fileContent, '.'),或使用StringTokenizer。在 BB 中,由于它基于 CLDC,因此 String 中的此方法不可用,因此您应该自己编写代码,或者使用/移植一个经过良好测试的库(如 Apache Commons 的 org.apache.commons.lang3.StringUtils.split )。在这一步之后,您将拥有一个字符串数组,每个字符串都是一个数字(示例中为 {"1","2","3","4"})。
4- 现在创建一个长度相同的 int 数组,并将数组中的每个字符串转换为其等效的 int,在每个元素 i 上使用 Integer.parseInt(splitted[i])。
5- 获取应用的版本并执行相同的步骤来获取 int 数组。在BB,您可以拨打ApplicationDescriptor.currentApplicationDescriptor().getVersion()。在 Android 中,PackageInfo.versionCode 或 PackageInfo.versionName,取决于您在清单中指定的内容。
6- 注意两个数组不需要具有相同的长度。您可以在 txt 中写入“1.2.3.4”,但在 AndroidManifest.xml 或 BlackBerry_App_Descriptor.xml 中包含“1.2.3”。将两个生成的 int 数组标准化为具有相同的长度(较长的数组的长度),并用零填充添加的元素。现在您将拥有两个 int 数组(在示例中,txtVersion = {1,2,3,4} 和 appVersion = {1,2,3,0})。逐一迭代比较版本。规则是:如果 txtVersion[i] > appVersion[i],那么你已经过时了,需要升级。