diff --git a/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt b/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt index 99f4d38..a5e10be 100644 --- a/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt +++ b/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt @@ -10,7 +10,7 @@ import com.example.hpostesting.data.model.patient.UserData @Database( entities = [UserData::class, HemoCubeTestData::class, DeviceData::class, BufferCheckData::class], - version = 27, + version = 28, exportSchema = false ) @TypeConverters(Converters::class) diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/DashboardActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/DashboardActivity.kt index 012e0f3..f793da3 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/DashboardActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/DashboardActivity.kt @@ -53,6 +53,7 @@ open interface IDataCollector: NatsMessageCallback { class DashboardActivity : AppCompatActivity(), IDataCollector { val TAG = "DashboardActivity" + private var isRegistered = false private lateinit var appBarConfiguration: AppBarConfiguration private lateinit var binding: ActivityDashboardBinding lateinit var sharedPreferences: SharedPreferences @@ -170,7 +171,11 @@ class DashboardActivity : AppCompatActivity(), IDataCollector { // Register a BroadcastReceiver to receive the download complete event val filter = IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE) - registerReceiver(downloadReceiver, filter) + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + isRegistered = true + registerReceiver(downloadReceiver, filter, RECEIVER_EXPORTED) + } } private fun extractApkUrl(responseBody: ResponseBody): String { return responseBody.string() @@ -214,8 +219,14 @@ class DashboardActivity : AppCompatActivity(), IDataCollector { } override fun onDestroy() { + if(isRegistered) { + try { + unregisterReceiver(downloadReceiver) + } catch (e: Exception) { + Log.d("HomeFragment", e.toString()) + } + } super.onDestroy() - unregisterReceiver(downloadReceiver) } override fun onResume() { diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt index cc4d979..764d1d2 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt @@ -6,12 +6,14 @@ import android.app.DownloadManager import android.content.BroadcastReceiver import android.content.Context import android.content.Context.BATTERY_SERVICE +import android.content.Context.RECEIVER_EXPORTED import android.content.DialogInterface import android.content.Intent import android.content.IntentFilter import android.content.SharedPreferences import android.net.Uri import android.os.BatteryManager +import android.os.Build import android.os.Bundle import android.util.Base64 import android.util.Log @@ -70,6 +72,7 @@ import java.util.zip.ZipInputStream @AndroidEntryPoint class HomeFragment : Fragment() { + private var isRegistered = false private var downloadId: Long = 0 private lateinit var binding: FragmentHomeBinding private val viewModel: TestRightViewModel by activityViewModels() @@ -1155,7 +1158,10 @@ class HomeFragment : Fragment() { // Register a BroadcastReceiver to receive the download complete event val filter = IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE) - requireActivity().registerReceiver(downloadReceiver, filter) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + isRegistered = true + requireActivity().registerReceiver(downloadReceiver, filter, RECEIVER_EXPORTED) + } } private fun extractApkUrl(responseBody: ResponseBody): String { return responseBody.string() @@ -1200,8 +1206,15 @@ class HomeFragment : Fragment() { } override fun onDestroy() { + if(isRegistered) { + try { + requireActivity().unregisterReceiver(downloadReceiver) + } catch (e: Exception) { + Log.d("HomeFragment", e.toString()) + } + } super.onDestroy() - requireActivity().unregisterReceiver(downloadReceiver) + } } diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt index ca5edf2..27c27ca 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt @@ -11,6 +11,7 @@ import android.content.ServiceConnection import android.hardware.usb.UsbDevice import android.hardware.usb.UsbDeviceConnection import android.hardware.usb.UsbManager +import android.os.Build import android.os.Bundle import android.os.IBinder import android.util.Log @@ -142,7 +143,11 @@ open class HemocubeActivity : AppCompatActivity() { } val filter = IntentFilter(Constants.HEMOCUBE_USB_PERMISSION) - registerReceiver(broadcastReceiver, filter) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + registerReceiver(broadcastReceiver, filter, RECEIVER_EXPORTED) + }else{ + registerReceiver(broadcastReceiver, filter) + } manager.requestPermission(device, mPendingIntent) } diff --git a/build.gradle b/build.gradle index ef52576..21a7b54 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { kotlin_version = '1.8.21' } dependencies { - classpath 'com.android.tools.build:gradle:8.2.2' + classpath 'com.android.tools.build:gradle:8.3.0' classpath 'com.google.gms:google-services:4.4.0' classpath 'com.google.firebase:firebase-appdistribution-gradle:4.0.1' } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a9f52c5..51a0b68 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Mon Jun 12 17:07:47 IST 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists