From 767ab17a47fa4c49421329e0f6060eac8baed120 Mon Sep 17 00:00:00 2001 From: Peyman Mohtashami Date: Fri, 18 Jun 2021 17:04:43 +0200 Subject: [PATCH] Remove compare signature --- app/build.gradle | 6 +-- app/src/main/AndroidManifest.xml | 2 +- .../java/org/radarcns/detail/InfoActivity.kt | 3 -- .../radarcns/detail/MainActivityViewImpl.kt | 3 -- app/src/main/res/values/strings.xml | 2 +- .../main/res/xml/remote_config_defaults.xml | 4 +- .../org/radarcns/detail/RadarServiceImpl.kt | 4 +- .../org/radarcns/detail/CompareSignatures.kt | 54 ------------------- .../org/radarcns/detail/CompareVersions.kt | 10 ++-- .../radarcns/detail/OneTimeScheduleWorker.kt | 6 +-- .../org/radarcns/detail/RadarServiceImpl.kt | 7 ++- .../radarcns/detail/UpdateScheduledService.kt | 7 ++- .../org/radarcns/detail/UpdatesActivity.kt | 27 +++++----- .../res/layout/activity_updates.xml | 45 ++-------------- 14 files changed, 42 insertions(+), 138 deletions(-) delete mode 100644 app/src/selfRelease/java/org/radarcns/detail/CompareSignatures.kt diff --git a/app/build.gradle b/app/build.gradle index a52a6590..0fee4d11 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,8 +11,8 @@ android { applicationId 'org.radarcns.detail' minSdkVersion 21 targetSdkVersion 30 - versionCode 51 - versionName '1.0.12' + versionCode 52 + versionName '1.0.13' manifestPlaceholders = ['appAuthRedirectScheme': 'org.radarbase.passive.app'] multiDexEnabled true } @@ -90,7 +90,7 @@ dependencies { implementation "org.radarbase:radar-android-phone:$radarCommonsVersion" implementation "org.radarbase:radar-android-phone-usage:$radarCommonsVersion" selfReleaseImplementation "org.radarbase:radar-android-phone-telephony:$radarCommonsVersion" - // implementation "org.radarbase:radar-android-empatica:$radarCommonsVersion" + implementation "org.radarbase:radar-android-empatica:$radarCommonsVersion" implementation "org.radarbase:radar-android-application-status:$radarCommonsVersion" implementation "org.radarbase:radar-android-weather:$radarCommonsVersion" implementation "org.radarbase:radar-android-audio:$radarCommonsVersion" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a1f1428c..2576d6c8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,7 +17,7 @@ - + -// println("%%%" + config.getBoolean(RadarConfiguration.SEND_ONLY_WITH_WIFI, false)) - findViewById(R.id.server_base_url).text = config.getString(BASE_URL_KEY, "") policyUrl = config.optString(PRIVACY_POLICY) diff --git a/app/src/main/java/org/radarcns/detail/MainActivityViewImpl.kt b/app/src/main/java/org/radarcns/detail/MainActivityViewImpl.kt index e94faebe..b1782bc3 100644 --- a/app/src/main/java/org/radarcns/detail/MainActivityViewImpl.kt +++ b/app/src/main/java/org/radarcns/detail/MainActivityViewImpl.kt @@ -32,7 +32,6 @@ import org.slf4j.LoggerFactory import java.text.SimpleDateFormat import java.util.* - class MainActivityViewImpl internal constructor(private val mainActivity: MainActivityImpl) : MainActivityView { private val connectionRows = ChangeRunner>>(emptyList()) private val actionsCells = ChangeRunner>(emptyList()) @@ -88,8 +87,6 @@ class MainActivityViewImpl internal constructor(private val mainActivity: MainAc mActionLayout = findViewById(R.id.actionLayout) this@MainActivityViewImpl.update() } - - } override fun onRadarServiceBound(binder: IRadarBinder) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 934a3ee8..44a40ca5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -125,7 +125,7 @@ New version is available.\nClick to download. - com.example.autoupdatetest1 + Favorites Settings diff --git a/app/src/main/res/xml/remote_config_defaults.xml b/app/src/main/res/xml/remote_config_defaults.xml index 1e67ffa3..6958d786 100644 --- a/app/src/main/res/xml/remote_config_defaults.xml +++ b/app/src/main/res/xml/remote_config_defaults.xml @@ -103,8 +103,8 @@ 600 - releases_url - https://api.github.com/repos/peyman-mohtashami/auto-update-test/releases + update_releases_url + https://api.github.com/repos/RADAR-base/radar-prmt-android/releases diff --git a/app/src/playStore/java/org/radarcns/detail/RadarServiceImpl.kt b/app/src/playStore/java/org/radarcns/detail/RadarServiceImpl.kt index ed9c2997..c58e26a4 100644 --- a/app/src/playStore/java/org/radarcns/detail/RadarServiceImpl.kt +++ b/app/src/playStore/java/org/radarcns/detail/RadarServiceImpl.kt @@ -27,7 +27,7 @@ import org.radarbase.android.source.SourceProvider import org.radarbase.monitor.application.ApplicationStatusProvider import org.radarbase.passive.audio.OpenSmileAudioProvider import org.radarbase.passive.bittium.FarosProvider -//import org.radarbase.passive.empatica.E4Provider +import org.radarbase.passive.empatica.E4Provider import org.radarbase.passive.phone.PhoneBluetoothProvider import org.radarbase.passive.phone.PhoneContactListProvider import org.radarbase.passive.phone.PhoneLocationProvider @@ -41,7 +41,7 @@ class RadarServiceImpl : RadarService() { override val plugins: List> = listOf( ApplicationStatusProvider(this), OpenSmileAudioProvider(this), -// E4Provider(this), + E4Provider(this), FarosProvider(this), PhoneBluetoothProvider(this), PhoneContactListProvider(this), diff --git a/app/src/selfRelease/java/org/radarcns/detail/CompareSignatures.kt b/app/src/selfRelease/java/org/radarcns/detail/CompareSignatures.kt deleted file mode 100644 index db98e7a6..00000000 --- a/app/src/selfRelease/java/org/radarcns/detail/CompareSignatures.kt +++ /dev/null @@ -1,54 +0,0 @@ -package org.radarcns.detail - -import android.content.Context -import android.content.pm.PackageManager.NameNotFoundException -import android.content.pm.Signature -import android.util.Log - -fun isSignatureSame( - context: Context, - archiveFilePath: String -): Boolean { - return isSignaturesSame( - getInstalledPackageSignatures(context), - getUpdatePackageSignatures(context, archiveFilePath) - ) -} - -fun isSignaturesSame(s1: Array?, s2: Array?): Boolean { - if (s1 == null) { - return false - } - if (s2 == null) { - return false - } - val set1: HashSet = HashSet() - for (sig in s1) { - set1.add(sig) - } - val set2: HashSet = HashSet() - for (sig in s2) { - set2.add(sig) - } - return set1 == set2 -} - -fun getInstalledPackageSignatures(context: Context): Array? { - try { - return context.packageManager.getPackageInfo(context.packageName, 0).signatures - } catch (e: NameNotFoundException) { - Log.e("CompareSignatures", "Cannot resolve info for " + context.packageName, e) - e.printStackTrace() - } - return null -} - -fun getUpdatePackageSignatures(context: Context, apkPath: String): Array? { - try { - return context.packageManager.getPackageArchiveInfo(apkPath, 0)?.signatures - } catch (e: NameNotFoundException) { - Log.e("CompareSignatures", "Cannot resolve info for $apkPath", e) - e.printStackTrace() - } - return null -} \ No newline at end of file diff --git a/app/src/selfRelease/java/org/radarcns/detail/CompareVersions.kt b/app/src/selfRelease/java/org/radarcns/detail/CompareVersions.kt index e6326a49..c4f4b1de 100644 --- a/app/src/selfRelease/java/org/radarcns/detail/CompareVersions.kt +++ b/app/src/selfRelease/java/org/radarcns/detail/CompareVersions.kt @@ -13,7 +13,13 @@ import org.radarcns.detail.UpdateScheduledService.Companion.UPDATE_VERSION_URL_K fun getUpdatePackage(context: Context, response: String): JSONObject? { val updatePackage = getUpdatePackageVersionAndUrl(response) val currentPackageVersion = getInstalledPackageVersion(context) - if (currentPackageVersion != updatePackage?.get(UPDATE_VERSION_NAME_KEY)) { + + val pattern = Regex("\\d+(\\.\\d+)+") + + val rawCurrentPackageVersion = currentPackageVersion?.let { pattern.find(it)?.value } + val rawUpdatePackageVersion = updatePackage?.getString(UPDATE_VERSION_NAME_KEY)?.let { pattern.find(it)?.value } + + if (rawCurrentPackageVersion != rawUpdatePackageVersion) { return updatePackage } return null @@ -33,9 +39,7 @@ fun getUpdatePackageVersionAndUrl(response: String): JSONObject? { val responseObject = Json.parseToJsonElement(response) if (responseObject.jsonArray.size > 0) { val latestRelease = responseObject.jsonArray[0] - // todo val tagName = latestRelease.jsonObject["tag_name"]?.toString()?.replace("\"", "") - // todo val browserDownloadUrl = latestRelease.jsonObject["assets"]?.jsonArray?.get(0)?.jsonObject?.getValue("browser_download_url").toString().replace("\"", "") val updateApk = JSONObject() updateApk.put(UPDATE_VERSION_URL_KEY, browserDownloadUrl) diff --git a/app/src/selfRelease/java/org/radarcns/detail/OneTimeScheduleWorker.kt b/app/src/selfRelease/java/org/radarcns/detail/OneTimeScheduleWorker.kt index 5019d2aa..0554a44f 100644 --- a/app/src/selfRelease/java/org/radarcns/detail/OneTimeScheduleWorker.kt +++ b/app/src/selfRelease/java/org/radarcns/detail/OneTimeScheduleWorker.kt @@ -25,10 +25,10 @@ class OneTimeScheduleWorker( val intent = Intent(context, UpdatesActivity::class.java).apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK + putExtra(FROM_NOTIFICATION_KEY, true) + putExtra(UPDATE_VERSION_NAME_KEY, versionName) + putExtra(UPDATE_VERSION_URL_KEY, url) } - intent.putExtra(FROM_NOTIFICATION_KEY, true) - intent.putExtra(UPDATE_VERSION_NAME_KEY, versionName) - intent.putExtra(UPDATE_VERSION_URL_KEY, url) val uniqueInt = (System.currentTimeMillis() and 0xfffffff).toInt() val pendingIntent = PendingIntent.getActivity( diff --git a/app/src/selfRelease/java/org/radarcns/detail/RadarServiceImpl.kt b/app/src/selfRelease/java/org/radarcns/detail/RadarServiceImpl.kt index 4b92ec4e..c5996de5 100644 --- a/app/src/selfRelease/java/org/radarcns/detail/RadarServiceImpl.kt +++ b/app/src/selfRelease/java/org/radarcns/detail/RadarServiceImpl.kt @@ -27,7 +27,7 @@ import org.radarbase.android.source.SourceProvider import org.radarbase.monitor.application.ApplicationStatusProvider import org.radarbase.passive.audio.OpenSmileAudioProvider import org.radarbase.passive.bittium.FarosProvider -//import org.radarbase.passive.empatica.E4Provider +import org.radarbase.passive.empatica.E4Provider import org.radarbase.passive.phone.PhoneBluetoothProvider import org.radarbase.passive.phone.PhoneContactListProvider import org.radarbase.passive.phone.PhoneLocationProvider @@ -43,7 +43,7 @@ class RadarServiceImpl : RadarService() { override val plugins: List> = listOf( ApplicationStatusProvider(this), OpenSmileAudioProvider(this), - // E4Provider(this), + E4Provider(this), FarosProvider(this), PhoneBluetoothProvider(this), PhoneContactListProvider(this), @@ -69,7 +69,6 @@ class RadarServiceImpl : RadarService() { override fun doConfigure(config: SingleRadarConfiguration) { super.doConfigure(config) configureRunAtBoot(config, MainActivityBootStarter::class.java) - val i = Intent(this, UpdateScheduledService::class.java) - startService(i) + startService(Intent(this, UpdateScheduledService::class.java)) } } diff --git a/app/src/selfRelease/java/org/radarcns/detail/UpdateScheduledService.kt b/app/src/selfRelease/java/org/radarcns/detail/UpdateScheduledService.kt index ce0fe40c..77ac3672 100644 --- a/app/src/selfRelease/java/org/radarcns/detail/UpdateScheduledService.kt +++ b/app/src/selfRelease/java/org/radarcns/detail/UpdateScheduledService.kt @@ -18,7 +18,6 @@ import org.radarbase.android.RadarApplication.Companion.radarConfig import org.radarcns.detail.UpdatesActivity.Companion.DAY import org.radarcns.detail.UpdatesActivity.Companion.UPDATE_CHECK_PERIOD_KEY import org.radarcns.detail.UpdatesActivity.Companion.UPDATE_RELEASES_URL_KEY -import org.radarcns.detail.UpdatesActivity.Companion.UPDATE_RELEASE_URL class UpdateScheduledService: LifecycleService() { private var timerStarted: Boolean = false @@ -26,7 +25,7 @@ class UpdateScheduledService: LifecycleService() { private var updateNotificationConfig = true private var updateCheckPeriod: Long = DAY - private var releasesUrl: String = "" + private var releasesUrl: String? = null override fun onRebind(intent: Intent?) { super.onRebind(intent) @@ -37,7 +36,7 @@ class UpdateScheduledService: LifecycleService() { radarConfig.config.observe(this, { config -> updateCheckPeriod = config.getLong(UPDATE_CHECK_PERIOD_KEY, DAY) - releasesUrl = config.getString(UPDATE_RELEASES_URL_KEY, UPDATE_RELEASE_URL) + releasesUrl = config.getString(UPDATE_RELEASES_URL_KEY) if (timerStarted) { timer.cancel() @@ -69,7 +68,7 @@ class UpdateScheduledService: LifecycleService() { val stringRequest = StringRequest( Request.Method.GET, url, { response -> - val updatePackage = getUpdatePackage(this@UpdateScheduledService, response, packageName) + val updatePackage = getUpdatePackage(this@UpdateScheduledService, response) if (updatePackage != null && updateNotificationConfig) { scheduleOneTimeNotification(0, updatePackage) } diff --git a/app/src/selfRelease/java/org/radarcns/detail/UpdatesActivity.kt b/app/src/selfRelease/java/org/radarcns/detail/UpdatesActivity.kt index 0b7c29c4..4be31295 100644 --- a/app/src/selfRelease/java/org/radarcns/detail/UpdatesActivity.kt +++ b/app/src/selfRelease/java/org/radarcns/detail/UpdatesActivity.kt @@ -28,7 +28,7 @@ import java.io.File class UpdatesActivity : AppCompatActivity(), TaskDelegate { private lateinit var config: RadarConfiguration - private var releasesUrl: String = "" + private var releasesUrl: String? = null private lateinit var currentVersion: TextView private lateinit var updateStatus: TextView @@ -43,7 +43,6 @@ class UpdatesActivity : AppCompatActivity(), TaskDelegate { private lateinit var progressBarPercent: TextView private lateinit var newVersionApkUrl: String - private var firstTime = true override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -59,9 +58,9 @@ class UpdatesActivity : AppCompatActivity(), TaskDelegate { config = radarConfig config.config.observe(this, { config -> - releasesUrl = config.getString(UPDATE_RELEASES_URL_KEY, UPDATE_RELEASE_URL) - if(firstTime) { - firstTime = false + val newReleaseUrl = config.getString(UPDATE_RELEASES_URL_KEY) + if( releasesUrl != newReleaseUrl ) { + releasesUrl = newReleaseUrl checkForUpdates() } }) @@ -114,7 +113,7 @@ class UpdatesActivity : AppCompatActivity(), TaskDelegate { } private fun setCurrentVersion() { - currentVersion.text = getString(R.string.currentVersion, getInstalledPackageVersion(this, packageName)) + currentVersion.text = getString(R.string.currentVersion, getInstalledPackageVersion(this)) } private fun checkForUpdates() { @@ -126,7 +125,7 @@ class UpdatesActivity : AppCompatActivity(), TaskDelegate { config.put(LAST_UPDATE_CHECK_TIMESTAMP, System.currentTimeMillis()) config.persistChanges() - val updatePackage = getUpdatePackage(this, response, packageName) + val updatePackage = getUpdatePackage(this, response) if (updatePackage != null) { val updateStatus: TextView = findViewById(R.id.update_status) newVersionApkUrl = updatePackage.get(UPDATE_VERSION_URL_KEY) as String @@ -135,6 +134,7 @@ class UpdatesActivity : AppCompatActivity(), TaskDelegate { getString(R.string.app_name), updatePackage.get(UPDATE_VERSION_NAME_KEY) ) + updateLinearLayout.visibility = View.VISIBLE } else { val updateStatus: TextView = findViewById(R.id.update_status) updateStatus.text = getString( @@ -142,8 +142,8 @@ class UpdatesActivity : AppCompatActivity(), TaskDelegate { R.string.app_name ) ) + updateLinearLayout.visibility = View.GONE } - updateLinearLayout.visibility = View.VISIBLE }, { Log.v("ScheduleService", "Error") @@ -164,9 +164,7 @@ class UpdatesActivity : AppCompatActivity(), TaskDelegate { val fileName = DOWNLOADED_FILE val fileLocation = File(filesDir, fileName) - val isPackageNameSame = isPackageNameSame(this, packageName, fileLocation.absolutePath) - val isSignatureSame = isSignatureSame(this, "org.radarcns.detail", fileLocation.absolutePath) - return isSignatureSame && isPackageNameSame + return isPackageNameSame(this, fileLocation.absolutePath) } private fun install() { @@ -202,12 +200,11 @@ class UpdatesActivity : AppCompatActivity(), TaskDelegate { companion object { private const val MIME_TYPE = "application/vnd.android.package-archive" private const val PROVIDER_PATH = ".provider" - private const val HOUR = 15 * 1000L // 60 * 60 * 1000L - const val DAY = 2 * HOUR // 24 * HOUR - const val WEEK = 2 * DAY // 7 * DAY + private const val HOUR = 60 * 60 * 1000L + const val DAY = 24 * HOUR + const val WEEK = 7 * DAY const val UPDATE_RELEASES_URL_KEY = "update_releases_url" const val UPDATE_CHECK_PERIOD_KEY = "update_check_period" - const val UPDATE_RELEASE_URL = "https://api.github.com/repos/peyman-mohtashami/auto-update-test/releases" } } diff --git a/app/src/selfRelease/res/layout/activity_updates.xml b/app/src/selfRelease/res/layout/activity_updates.xml index 8789dc06..429d630b 100644 --- a/app/src/selfRelease/res/layout/activity_updates.xml +++ b/app/src/selfRelease/res/layout/activity_updates.xml @@ -106,6 +106,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"/> + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + \ No newline at end of file