我之前可能已经问过我的问题,但是找不到合适的搜索关键字。
因此,我被指派开发一个即将上传的应用程序更新。但我有一个大问题。已安装先前版本的用户可能具有一些可能在更新时丢失的数据。数据存储在此位置
/data/data/app_package_name/shared_prefs/data.xml
我需要浏览data.xml中的文本,以获取在新版本中使用它们所需的片段。如何检查应用程序是否先前已安装,然后在安装更新时才读取用户数据一次?
答案 0 :(得分:1)
在您的主要活动中:
private static final String PRIVATE_PREF = "MainActivity";
private static final String VERSION_KEY = "1";
在onCreate()中:
init();
init()方法:
private void init() {
SharedPreferences sharedPref = getSharedPreferences(PRIVATE_PREF, Context.MODE_PRIVATE);
int currentVersionNumber = 0;
int savedVersionNumber = sharedPref.getInt(VERSION_KEY, 0);
try {
PackageInfo pi = getPackageManager().getPackageInfo(getPackageName(), 0);
currentVersionNumber = pi.versionCode;
} catch (Exception e) {}
if (currentVersionNumber > savedVersionNumber) {
readData();
Editor editor = sharedPref.edit();
editor.putInt(VERSION_KEY, currentVersionNumber);
editor.commit();
}
}
readData()方法 - 类似于:
private void readData() {
StringBuilder sb = new StringBuilder();
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
is.close();
} catch(OutOfMemoryError om){
om.printStackTrace();
} catch(Exception ex){
ex.printStackTrace();
}
String result = sb.toString();
}
确保在发布新应用版本时更改VERSION_KEY。
要解析XML,请参阅tutorial