Привет, у меня была та же проблема, что и у тебя. Я хотел скопировать и активировать, только если он был новее. Поэтому я сделал хранилище sharedPreferences последней установленной версией и использовал ее для сравнения дат:
Я добавляю запись в файл strings.xml для хранения версии приложения:
<string name="version">0.3</string>
Затем я помещаю предложение if в метод onCreate основного класса:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if( Float.parseFloat(getString(R.string.version)) > prefs.getFloat("LastInstalledVersion", (float) 0.0 ) ) {
copyfiles();
}
И я добавляю строку новой версии в sharedPreferences метода onPause, таким образом, она будет добавлена наверняка, прежде чем снова будет вызван onCreate:
SharedPreferences prefs= PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.putFloat("LastInstalledVersion", Float.parseFloat(getString(R.string.version)) );
editor.commit();
Вероятно, это проще, чем использовать имена версий в самом файле.
Обратите внимание, что файлы копирования будут запускаться при первом открытии приложения, если у вас версия выше 0.0, и будут запускаться снова, только если вы увеличите строку версии в более поздних версиях.
Имейте в виду, что этот пример работает только в том случае, если у вас есть один файл для сравнения или вам не нужны версии отдельных файлов. В противном случае вы можете использовать несколько разных строк для хранения версий файлов.
person
M Granja
schedule
27.05.2011