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