FP2-1214: After a successful update the updater still shows there is an update present
Fingerprint versioning enabled by changing version number type from int to String.
Change-Id: Ifc6978f0fcc54fb52fa7efe7196fe5e9ae9c0cbe
diff --git a/res/values/config.xml b/res/values/config.xml
index 1b3970b..4b6012b 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -7,7 +7,7 @@
<string name="config_xml" translatable="false">.xml</string>
<string name="config_sig" translatable="false">.sig</string>
- <integer name="defaultVersionNumber">1</integer>
+ <string name="defaultVersionNumber">1</string>
<string name="defaultVersionName" translatable="false">Almond</string>
<string name="defaultBuildNumber" translatable="false">1.0</string>
<string name="defaultBuildDate" translatable="false">0</string>
diff --git a/src/com/fairphone/updater/FairphoneUpdater.java b/src/com/fairphone/updater/FairphoneUpdater.java
index c86898d..3976b89 100644
--- a/src/com/fairphone/updater/FairphoneUpdater.java
+++ b/src/com/fairphone/updater/FairphoneUpdater.java
@@ -200,13 +200,13 @@
void getSelectedVersionFromSharedPreferences()
{
String versionImageType = mSharedPreferences.getString(PREFERENCE_SELECTED_VERSION_TYPE, "");
- int versionNumber = mSharedPreferences.getInt(PREFERENCE_SELECTED_VERSION_NUMBER, 0);
+ String versionNumber = mSharedPreferences.getString(PREFERENCE_SELECTED_VERSION_NUMBER, "0");
mSelectedVersion = UpdaterData.getInstance().getVersion(versionImageType, versionNumber);
}
void getSelectedStoreFromSharedPreferences()
{
- int storeNumber = mSharedPreferences.getInt(PREFERENCE_SELECTED_STORE_NUMBER, -1);
+ String storeNumber = mSharedPreferences.getString(PREFERENCE_SELECTED_STORE_NUMBER, "-1");
mSelectedStore = UpdaterData.getInstance().getStore(storeNumber);
}
@@ -698,25 +698,25 @@
public void setSelectedVersion(Version selectedVersion)
{
- int versionNumber = selectedVersion != null ? selectedVersion.getNumber() : 0;
+ String versionNumber = selectedVersion != null ? selectedVersion.getNumber() : "0";
String versionImageType = selectedVersion != null ? selectedVersion.getImageType() : "";
clearSelectedVersion(versionNumber, versionImageType);
mSelectedVersion = UpdaterData.getInstance().getVersion(versionImageType, versionNumber);
- clearSelectedStore(-1);
+ clearSelectedStore("-1");
}
public void clearSelectedItems()
{
- clearSelectedVersion(0, "");
- clearSelectedStore(-1);
+ clearSelectedVersion("0", "");
+ clearSelectedStore("-1");
}
- private void clearSelectedVersion(int versionNumber, String versionImageType)
+ private void clearSelectedVersion(String versionNumber, String versionImageType)
{
Editor editor = mSharedPreferences.edit();
- editor.putInt(PREFERENCE_SELECTED_VERSION_NUMBER, versionNumber);
+ editor.putString(PREFERENCE_SELECTED_VERSION_NUMBER, versionNumber);
editor.putString(PREFERENCE_SELECTED_VERSION_TYPE, versionImageType);
editor.commit();
@@ -725,18 +725,18 @@
public void setSelectedStore(Store selectedStore)
{
- int storeNumber = selectedStore != null ? selectedStore.getNumber() : -1;
+ String storeNumber = selectedStore != null ? selectedStore.getNumber() : "-1";
clearSelectedStore(storeNumber);
mSelectedStore = UpdaterData.getInstance().getStore(storeNumber);
- clearSelectedVersion(0, "");
+ clearSelectedVersion("0", "");
}
- private void clearSelectedStore(int storeNumber)
+ private void clearSelectedStore(String storeNumber)
{
Editor editor = mSharedPreferences.edit();
- editor.putInt(PREFERENCE_SELECTED_STORE_NUMBER, storeNumber);
+ editor.putString(PREFERENCE_SELECTED_STORE_NUMBER, storeNumber);
editor.commit();
mSelectedStore = null;
diff --git a/src/com/fairphone/updater/data/DownloadableItem.java b/src/com/fairphone/updater/data/DownloadableItem.java
index 1513fca..e35f38c 100644
--- a/src/com/fairphone/updater/data/DownloadableItem.java
+++ b/src/com/fairphone/updater/data/DownloadableItem.java
@@ -16,19 +16,19 @@
package com.fairphone.updater.data;
-import java.util.HashMap;
-import java.util.Map;
-
import android.text.TextUtils;
import android.util.Log;
+import java.util.HashMap;
+import java.util.Map;
+
public abstract class DownloadableItem
{
private static final String TAG = DownloadableItem.class.getSimpleName();
public static final String DEFAULT_NOTES_LANG = "en";
- private int mNumber;
+ private String mNumber;
private String mName;
@@ -46,7 +46,7 @@
DownloadableItem()
{
- mNumber = 0;
+ mNumber = "";
mName = "";
mOTADownloadLink = "";
mOTAMd5Sum = "";
@@ -70,25 +70,13 @@
mReleaseNotesMap = other.mReleaseNotesMap;
}
- public int getNumber()
+ public String getNumber()
{
return mNumber;
}
public void setNumber(String number)
{
- try
- {
- this.mNumber = Integer.valueOf(number);
- } catch (NumberFormatException e)
- {
- Log.w(TAG, "Error decoding version number. Defaulting to 0: " + e.getLocalizedMessage());
- this.mNumber = 0;
- }
- }
-
- public void setNumber(int number)
- {
this.mNumber = number;
}
@@ -129,7 +117,7 @@
if (item != null)
{
- result = this.mNumber > item.mNumber;
+ result = !this.mNumber.equals(item.mNumber);
}
else
{
diff --git a/src/com/fairphone/updater/data/Store.java b/src/com/fairphone/updater/data/Store.java
index 0b5813e..e6b8a09 100644
--- a/src/com/fairphone/updater/data/Store.java
+++ b/src/com/fairphone/updater/data/Store.java
@@ -33,7 +33,7 @@
int retVal;
if (another != null)
{
- if (this.getNumber() > another.getNumber())
+ if (!this.getNumber().equals(another.getNumber()))
{
retVal = 1;
}
diff --git a/src/com/fairphone/updater/data/UpdaterData.java b/src/com/fairphone/updater/data/UpdaterData.java
index 3daacb2..fff710d 100644
--- a/src/com/fairphone/updater/data/UpdaterData.java
+++ b/src/com/fairphone/updater/data/UpdaterData.java
@@ -16,15 +16,15 @@
private static UpdaterData mInstance;
- private int mLatestAOSPVersionNumber;
+ private String mLatestAOSPVersionNumber;
- private int mLatestFairphoneVersionNumber;
+ private String mLatestFairphoneVersionNumber;
- private final Map<Integer, Version> mAOSPVersionMap;
+ private final Map<String, Version> mAOSPVersionMap;
- private final Map<Integer, Version> mFairphoneVersionMap;
+ private final Map<String, Version> mFairphoneVersionMap;
- private final Map<Integer, Store> mAppStoresMap;
+ private final Map<String, Store> mAppStoresMap;
public static UpdaterData getInstance()
{
@@ -37,8 +37,8 @@
private UpdaterData()
{
- mLatestAOSPVersionNumber = 0;
- mLatestFairphoneVersionNumber = 0;
+ mLatestAOSPVersionNumber = "0";
+ mLatestFairphoneVersionNumber = "0";
mAOSPVersionMap = new HashMap<>();
mFairphoneVersionMap = new HashMap<>();
mAppStoresMap = new HashMap<>();
@@ -46,8 +46,8 @@
public void resetUpdaterData()
{
- mLatestAOSPVersionNumber = 0;
- mLatestFairphoneVersionNumber = 0;
+ mLatestAOSPVersionNumber = "0";
+ mLatestFairphoneVersionNumber = "0";
mAOSPVersionMap.clear();
mFairphoneVersionMap.clear();
mAppStoresMap.clear();
@@ -58,16 +58,16 @@
mLatestAOSPVersionNumber = getLatestVersionFromTag(latestVersion);
}
- private static int getLatestVersionFromTag(String latestVersion)
+ private static String getLatestVersionFromTag(String latestVersion)
{
- int latestVersionNumber;
+ String latestVersionNumber;
try
{
- latestVersionNumber = Integer.valueOf(latestVersion);
+ latestVersionNumber = latestVersion;
} catch (NumberFormatException e)
{
Log.w(TAG, "Error decoding latest version number. Defaulting to 0: " + e.getLocalizedMessage());
- latestVersionNumber = 0;
+ latestVersionNumber = "0";
}
return latestVersionNumber;
}
@@ -145,7 +145,7 @@
return mapToOrderedStoreList(mAppStoresMap.values());
}
- public Version getVersion(String imageType, int versionNumber)
+ public Version getVersion(String imageType, String versionNumber)
{
Version version = null;
if (Version.IMAGE_TYPE_AOSP.equalsIgnoreCase(imageType))
@@ -160,7 +160,7 @@
return version;
}
- public Store getStore(int storeNumber)
+ public Store getStore(String storeNumber)
{
return mAppStoresMap.get(storeNumber);
}
diff --git a/src/com/fairphone/updater/data/Version.java b/src/com/fairphone/updater/data/Version.java
index 29ba80a..8468515 100644
--- a/src/com/fairphone/updater/data/Version.java
+++ b/src/com/fairphone/updater/data/Version.java
@@ -45,7 +45,7 @@
private final List<Integer> mDependencies;
- public static final int ZIP_INSTALL_VERSION = 999;
+ public static final String ZIP_INSTALL_VERSION = "999";
public Version()
{
@@ -147,7 +147,7 @@
int retVal;
if (another != null)
{
- if (this.getNumber() < another.getNumber() && this.mImageType.equalsIgnoreCase(another.mImageType))
+ if (!this.getNumber().equals(another.getNumber()) && this.mImageType.equalsIgnoreCase(another.mImageType))
{
retVal = 1;
}
diff --git a/src/com/fairphone/updater/data/VersionParserHelper.java b/src/com/fairphone/updater/data/VersionParserHelper.java
index c2b7fcf..da466de 100644
--- a/src/com/fairphone/updater/data/VersionParserHelper.java
+++ b/src/com/fairphone/updater/data/VersionParserHelper.java
@@ -49,6 +49,8 @@
private static final String CURRENT_ANDROID_VERSION = "fairphone.ota.android_version";
private static final String CURRENT_VERSION_IMAGE_TYPE = "fairphone.ota.image_type";
private static final String CURRENT_VERSION_BUILD_DATE = "ro.build.date.utc";
+ private static final String CURRENT_VERSION_FINGERPRINT = "ro.build.fingerprint";
+
private static Version version;
public static Version getDeviceVersion(Context context)
@@ -64,10 +66,10 @@
try
{
- versionBuilder.setNumber(Integer.valueOf(getSystemData(context, CURRENT_VERSION_NUMBER, knownFPDevice)));
+ versionBuilder.setNumber(getSystemData(context, CURRENT_VERSION_FINGERPRINT, knownFPDevice));
} catch (NumberFormatException e)
{
- int defaultVersionNumber = context.getResources().getInteger(R.integer.defaultVersionNumber);
+ String defaultVersionNumber = context.getResources().getString(R.string.defaultVersionNumber);
Log.w(TAG, "Error parsing current version number. Defaulting to " + defaultVersionNumber + ": " + e.getLocalizedMessage());
versionBuilder.setNumber(defaultVersionNumber);
}
@@ -92,7 +94,7 @@
String result;
switch (property) {
case CURRENT_VERSION_NUMBER:
- result = Utils.getprop(CURRENT_VERSION_NUMBER, useDefaults ? String.valueOf(context.getResources().getInteger(R.integer.defaultVersionNumber)) : "");
+ result = Utils.getprop(CURRENT_VERSION_NUMBER, useDefaults ? String.valueOf(context.getResources().getString(R.string.defaultVersionNumber)) : "");
break;
case CURRENT_VERSION_NAME:
result = Utils.getprop(CURRENT_VERSION_NAME, useDefaults ? context.getResources().getString(R.string.defaultVersionName) : "");
@@ -112,6 +114,9 @@
case CURRENT_BETA_STATUS:
result = Utils.getprop(CURRENT_BETA_STATUS, useDefaults ? context.getResources().getString(R.string.defaultBetaStatus) : "0");
break;
+ case CURRENT_VERSION_FINGERPRINT:
+ result = Utils.getprop(CURRENT_VERSION_FINGERPRINT, useDefaults ? "" : ""); // TODO: define default value for fingerprint
+ break;
default:
result = "";
break;
diff --git a/src/com/fairphone/updater/tools/Utils.java b/src/com/fairphone/updater/tools/Utils.java
index 1fc64cc..bb4e038 100644
--- a/src/com/fairphone/updater/tools/Utils.java
+++ b/src/com/fairphone/updater/tools/Utils.java
@@ -80,7 +80,7 @@
private static final double PERCENT_100 = 100d;
private static final char CHAR_SPACE = ' ';
private static final char CHAR_ZERO = '0';
- public static final int GAPPS_STORE_NUMBER = 0;
+ public static final String GAPPS_STORE_NUMBER = "0";
private static double getPartitionSizeInGBytes(File path)
{
@@ -371,7 +371,6 @@
if (item != null)
{
filename.append(type);
- filename.append(item.getNumber());
}
filename.append(".zip");
return filename;