Эй, у меня была такая же проблема, как и у тебя. Я хотел копировать и использовать только тогда, когда это было новее. Поэтому я заставил 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, и будут запускаться снова, если вы увеличите строку версии в более поздних версиях.
Имейте в виду, что этот пример работает, только если у вас есть один файл для сравнения, или вам нет дела до отдельных версий файлов. В противном случае вы можете использовать несколько разных строк для хранения версий файлов.