Android获取以前版本的应用程序的数据

时间:2014-11-26 18:35:37

标签: android

我之前可能已经问过我的问题,但是找不到合适的搜索关键字。

因此,我被指派开发一个即将上传的应用程序更新。但我有一个大问题。已安装先前版本的用户可能具有一些可能在更新时丢失的数据。数据存储在此位置

  

/data/data/app_package_name/shared_prefs/data.xml

我需要浏览data.xml中的文本,以获取在新版本中使用它们所需的片段。如何检查应用程序是否先前已安装,然后在安装更新时才读取用户数据一次?

1 个答案:

答案 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