aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2013-01-23 09:22:04 +0100
committerSamuel Tardieu <sam@rfc1149.net>2013-01-23 09:22:04 +0100
commit07e614c71e22d5bc7a6fc3e31557b4d20a21daea (patch)
tree187afdd53f7a12bba7c587c41551edaccf0a5ed3
parent49a756515566db95b4bf280c70a5ca03812ee488 (diff)
downloadcgeo-07e614c71e22d5bc7a6fc3e31557b4d20a21daea.zip
cgeo-07e614c71e22d5bc7a6fc3e31557b4d20a21daea.tar.gz
cgeo-07e614c71e22d5bc7a6fc3e31557b4d20a21daea.tar.bz2
fix #2317: NPE while backuping data
The previous fix for #2317 was incomplete, as the dependency of the CentralBackupAgent onto Settings caused a NPE because Settings static initializations require that an application has been created, which is apparently not the case when a backup is launched by the OS. The preference name has been isolated into a no-dependency package so that the CentralBackupAgent does not depend on an application existing anymore.
-rw-r--r--main/src/cgeo/geocaching/Settings.java6
-rw-r--r--main/src/cgeo/geocaching/backup/CentralBackupAgent.java4
-rw-r--r--main/src/cgeo/geocaching/utils/ApplicationSettings.java24
3 files changed, 26 insertions, 8 deletions
diff --git a/main/src/cgeo/geocaching/Settings.java b/main/src/cgeo/geocaching/Settings.java
index 7e6f91f..850c4f4 100644
--- a/main/src/cgeo/geocaching/Settings.java
+++ b/main/src/cgeo/geocaching/Settings.java
@@ -1359,12 +1359,6 @@ public final class Settings {
}
}
- public static String getPreferencesName() {
- // There is currently no Android API to get the file name of the shared preferences. Let's hardcode
- // it without needing a cgeoapplication instance.
- return "cgeo.geocaching_preferences";
- }
-
public static boolean getPlainLogs() {
return sharedPrefs.getBoolean(KEY_PLAIN_LOGS, false);
}
diff --git a/main/src/cgeo/geocaching/backup/CentralBackupAgent.java b/main/src/cgeo/geocaching/backup/CentralBackupAgent.java
index f6b9024..28a668c 100644
--- a/main/src/cgeo/geocaching/backup/CentralBackupAgent.java
+++ b/main/src/cgeo/geocaching/backup/CentralBackupAgent.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.backup;
-import cgeo.geocaching.Settings;
+import cgeo.geocaching.utils.ApplicationSettings;
import android.annotation.TargetApi;
import android.app.backup.BackupAgentHelper;
@@ -13,7 +13,7 @@ public class CentralBackupAgent extends BackupAgentHelper {
@Override
public void onCreate() {
- final SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, Settings.getPreferencesName());
+ final SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, ApplicationSettings.getPreferencesName());
addHelper(PREFS_BACKUP_KEY, helper);
}
diff --git a/main/src/cgeo/geocaching/utils/ApplicationSettings.java b/main/src/cgeo/geocaching/utils/ApplicationSettings.java
new file mode 100644
index 0000000..99d3142
--- /dev/null
+++ b/main/src/cgeo/geocaching/utils/ApplicationSettings.java
@@ -0,0 +1,24 @@
+package cgeo.geocaching.utils;
+
+/**
+ * This utility class contains static settings that do not require a context or
+ * an application. It may not depend or use any other package from c:geo.
+ * <br/>
+ * It is used, for example, to get some settings for the BackupAgent. In this case,
+ * no application is instantiated by the OS.
+ */
+
+public class ApplicationSettings {
+
+ /**
+ * Get the name of the preferences file.
+ *
+ * @return the name of the shared preferences file without the extension
+ */
+ public static String getPreferencesName() {
+ // There is currently no Android API to get the file name of the shared preferences. Let's hardcode
+ // it without needing a cgeoapplication instance.
+ return "cgeo.geocaching_preferences";
+ }
+
+}