Loading app/privapp_whitelist_org.lineageos.updater.xml +1 −0 Original line number Diff line number Diff line Loading @@ -21,5 +21,6 @@ <permission name="android.permission.REBOOT"/> <permission name="android.permission.RECOVERY"/> <permission name="android.permission.START_ACTIVITIES_FROM_BACKGROUND"/> <permission name="android.permission.WRITE_SECURE_SETTINGS"/> </privapp-permissions> </permissions> app/src/main/AndroidManifest.xml +2 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" /> <uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> <application android:allowBackup="false" Loading app/src/main/java/org/lineageos/updater/UpdatesCheckReceiver.java +9 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.SystemClock; import android.provider.Settings; import android.util.Log; import androidx.core.app.NotificationCompat; Loading Loading @@ -57,6 +58,14 @@ public class UpdatesCheckReceiver extends BroadcastReceiver { SharedPreferences.Editor editor = preferences.edit(); if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { // Check if the current value is empty or null and set anon hash. String anonHash = Settings.Secure.getString(context.getContentResolver(), Constants.OTA_ANON_HASH); if (anonHash == null || anonHash.isEmpty()) { Settings.Secure.putString(context.getContentResolver(), Constants.OTA_ANON_HASH, Utils.generateRandomID()); } Utils.cleanupDownloadsDir(context); // Reset resume or update check failed on reboot Loading app/src/main/java/org/lineageos/updater/misc/Constants.java +1 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ public final class Constants { public static final String AB_PAYLOAD_BIN_PATH = "payload.bin"; public static final String AB_PAYLOAD_PROPERTIES_PATH = "payload_properties.txt"; public static final String OTA_ANON_HASH = "ota_anon_hash"; public static final String RESUME_DOWNLOAD_ID = "resume_download_id"; public static final String AUTO_UPDATE_CHECK_FAILED = "auto_update_check_failed"; Loading app/src/main/java/org/lineageos/updater/misc/Utils.java +12 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ import java.util.List; import java.util.Locale; import java.util.Objects; import java.util.regex.Matcher; import java.util.UUID; import java.util.regex.Pattern; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; Loading @@ -94,6 +95,11 @@ public class Utils { return new File(context.getCacheDir(), "updates.json"); } public static String generateRandomID() { String uuid = UUID.randomUUID().toString().replace("-", ""); return "anon" + uuid; } // This should really return an UpdateBaseInfo object, but currently this only // used to initialize UpdateInfo objects private static UpdateInfo parseJsonUpdate(JSONObject object) throws JSONException { Loading Loading @@ -233,6 +239,8 @@ public class Utils { String device = SystemProperties.get(Constants.PROP_NEXT_DEVICE, SystemProperties.get(Constants.PROP_DEVICE)); String type = SystemProperties.get(Constants.PROP_RELEASE_TYPE).toLowerCase(Locale.ROOT); String anonHash = Settings.Secure.getString(context.getContentResolver(), Constants.OTA_ANON_HASH); String serverUrl = SystemProperties.get(Constants.PROP_UPDATER_URI); if (retrieveStatus(context) != null && retrieveStatus(context).equals("true") Loading @@ -244,6 +252,10 @@ public class Utils { serverUrl = context.getString(R.string.updater_server_url); } if (anonHash != null && !anonHash.isEmpty()) { serverUrl += "?ota_anon_hash=" + anonHash; } return serverUrl.replace("{device}", device) .replace("{type}", type) .replace("{incr}", incrementalVersion); Loading Loading
app/privapp_whitelist_org.lineageos.updater.xml +1 −0 Original line number Diff line number Diff line Loading @@ -21,5 +21,6 @@ <permission name="android.permission.REBOOT"/> <permission name="android.permission.RECOVERY"/> <permission name="android.permission.START_ACTIVITIES_FROM_BACKGROUND"/> <permission name="android.permission.WRITE_SECURE_SETTINGS"/> </privapp-permissions> </permissions>
app/src/main/AndroidManifest.xml +2 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" /> <uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> <application android:allowBackup="false" Loading
app/src/main/java/org/lineageos/updater/UpdatesCheckReceiver.java +9 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.SystemClock; import android.provider.Settings; import android.util.Log; import androidx.core.app.NotificationCompat; Loading Loading @@ -57,6 +58,14 @@ public class UpdatesCheckReceiver extends BroadcastReceiver { SharedPreferences.Editor editor = preferences.edit(); if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { // Check if the current value is empty or null and set anon hash. String anonHash = Settings.Secure.getString(context.getContentResolver(), Constants.OTA_ANON_HASH); if (anonHash == null || anonHash.isEmpty()) { Settings.Secure.putString(context.getContentResolver(), Constants.OTA_ANON_HASH, Utils.generateRandomID()); } Utils.cleanupDownloadsDir(context); // Reset resume or update check failed on reboot Loading
app/src/main/java/org/lineageos/updater/misc/Constants.java +1 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ public final class Constants { public static final String AB_PAYLOAD_BIN_PATH = "payload.bin"; public static final String AB_PAYLOAD_PROPERTIES_PATH = "payload_properties.txt"; public static final String OTA_ANON_HASH = "ota_anon_hash"; public static final String RESUME_DOWNLOAD_ID = "resume_download_id"; public static final String AUTO_UPDATE_CHECK_FAILED = "auto_update_check_failed"; Loading
app/src/main/java/org/lineageos/updater/misc/Utils.java +12 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ import java.util.List; import java.util.Locale; import java.util.Objects; import java.util.regex.Matcher; import java.util.UUID; import java.util.regex.Pattern; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; Loading @@ -94,6 +95,11 @@ public class Utils { return new File(context.getCacheDir(), "updates.json"); } public static String generateRandomID() { String uuid = UUID.randomUUID().toString().replace("-", ""); return "anon" + uuid; } // This should really return an UpdateBaseInfo object, but currently this only // used to initialize UpdateInfo objects private static UpdateInfo parseJsonUpdate(JSONObject object) throws JSONException { Loading Loading @@ -233,6 +239,8 @@ public class Utils { String device = SystemProperties.get(Constants.PROP_NEXT_DEVICE, SystemProperties.get(Constants.PROP_DEVICE)); String type = SystemProperties.get(Constants.PROP_RELEASE_TYPE).toLowerCase(Locale.ROOT); String anonHash = Settings.Secure.getString(context.getContentResolver(), Constants.OTA_ANON_HASH); String serverUrl = SystemProperties.get(Constants.PROP_UPDATER_URI); if (retrieveStatus(context) != null && retrieveStatus(context).equals("true") Loading @@ -244,6 +252,10 @@ public class Utils { serverUrl = context.getString(R.string.updater_server_url); } if (anonHash != null && !anonHash.isEmpty()) { serverUrl += "?ota_anon_hash=" + anonHash; } return serverUrl.replace("{device}", device) .replace("{type}", type) .replace("{incr}", incrementalVersion); Loading