我正在寻找基于自定义 ROM 工具的更新功能。我使用此代码http://www.androidsnippets.com/check-for-updates-once-a-day作为基础,并很快意识到我无法使用 Dropbox 来部署该代码。所以我修改了代码以从 Dropbox 下载一个 version.txt 文件。该文件包含一个数字(最新版本代码,在本例中为 11)。我需要读取该行并将字符串解析为整数以与当前 versionCode 进行比较,并在存在更新时触发下载。除了从 txt 文件中解析 int 之外,所有代码都有效。
这是我的代码:
private Thread checkUpdate = new Thread() {
public void run() {
try {
File sdcard = Environment.getExternalStorageDirectory();
File file = new File(sdcard,"BPversion.txt");
StringBuilder text = new StringBuilder();
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
text.append(line);
int curVersion = getPackageManager().getPackageInfo("com.JB15613.BPcolorTool", 0).versionCode;
System.out.println(line);
int newVersion = 0;
System.out.println(line);
try {
newVersion = Integer.parseInt(line);
System.out.println(line);
} catch(NumberFormatException nfe) {
System.out.println("Exception " + nfe);
}
if (newVersion > curVersion) {
mHandler.post(showUpdate);
}
}
} catch (Exception e) {
Log.d("ANDRO_ASYNC", "Caught exception");
}
}
我得到了这个例外:
Exception java.lang.NumberFormatException: Invalid int: "11"
当我应用断点并运行调试器时,它会在 parseInt 行崩溃。
11 对我来说看起来像是一个有效的 int !
任何帮助是极大的赞赏!