From 0a2c5fec879fa6eedc55d302274e8fe9e7a75b8e Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Wed, 21 Sep 2022 11:30:40 +0200 Subject: [PATCH] resolve getParcelableExtra issue --- .../info/nightscout/androidaps/receivers/BTReceiver.kt | 3 ++- .../nightscout/androidaps/extensions/IntentExtension.kt | 7 +++++++ .../plugins/general/maintenance/PrefsFileContract.kt | 3 ++- .../pump/insight/activities/InsightPairingActivity.java | 4 +++- .../plugins/pump/common/ble/BondStateReceiver.kt | 7 ++++--- 5 files changed, 18 insertions(+), 6 deletions(-) create mode 100644 core/src/main/java/info/nightscout/androidaps/extensions/IntentExtension.kt diff --git a/app/src/main/java/info/nightscout/androidaps/receivers/BTReceiver.kt b/app/src/main/java/info/nightscout/androidaps/receivers/BTReceiver.kt index 34f53e3e32..8d4a97c243 100644 --- a/app/src/main/java/info/nightscout/androidaps/receivers/BTReceiver.kt +++ b/app/src/main/java/info/nightscout/androidaps/receivers/BTReceiver.kt @@ -5,6 +5,7 @@ import android.content.Context import android.content.Intent import dagger.android.DaggerBroadcastReceiver import info.nightscout.androidaps.events.EventBTChange +import info.nightscout.androidaps.extensions.safeGetParcelableExtra import info.nightscout.androidaps.plugins.bus.RxBus import javax.inject.Inject @@ -14,7 +15,7 @@ class BTReceiver : DaggerBroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { super.onReceive(context, intent) - val device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE, BluetoothDevice::class.java) ?: return + val device = intent.safeGetParcelableExtra(BluetoothDevice.EXTRA_DEVICE, BluetoothDevice::class.java) ?: return when (intent.action) { BluetoothDevice.ACTION_ACL_CONNECTED -> diff --git a/core/src/main/java/info/nightscout/androidaps/extensions/IntentExtension.kt b/core/src/main/java/info/nightscout/androidaps/extensions/IntentExtension.kt new file mode 100644 index 0000000000..a5420b26a5 --- /dev/null +++ b/core/src/main/java/info/nightscout/androidaps/extensions/IntentExtension.kt @@ -0,0 +1,7 @@ +package info.nightscout.androidaps.extensions + +import android.content.Intent + +fun Intent.safeGetParcelableExtra(name: String?, clazz: Class): T? = + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.TIRAMISU) getParcelableExtra(name, clazz) + else @Suppress("DEPRECATION") getParcelableExtra(name) diff --git a/core/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/PrefsFileContract.kt b/core/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/PrefsFileContract.kt index 3cbd6463e8..9fafc080f9 100644 --- a/core/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/PrefsFileContract.kt +++ b/core/src/main/java/info/nightscout/androidaps/plugins/general/maintenance/PrefsFileContract.kt @@ -4,6 +4,7 @@ import android.content.Context import android.content.Intent import androidx.activity.result.contract.ActivityResultContract import androidx.fragment.app.FragmentActivity +import info.nightscout.androidaps.extensions.safeGetParcelableExtra import info.nightscout.androidaps.plugins.general.maintenance.activities.PrefImportListActivity class PrefsFileContract : ActivityResultContract() { @@ -15,7 +16,7 @@ class PrefsFileContract : ActivityResultContract() { override fun parseResult(resultCode: Int, intent: Intent?): PrefsFile? { return when (resultCode) { - FragmentActivity.RESULT_OK -> intent?.getParcelableExtra(OUTPUT_PARAM, PrefsFile::class.java) + FragmentActivity.RESULT_OK -> intent?.safeGetParcelableExtra(OUTPUT_PARAM, PrefsFile::class.java) else -> null } } diff --git a/insight/src/main/java/info/nightscout/androidaps/plugins/pump/insight/activities/InsightPairingActivity.java b/insight/src/main/java/info/nightscout/androidaps/plugins/pump/insight/activities/InsightPairingActivity.java index 97a5c9dfbe..5a0cc24d68 100644 --- a/insight/src/main/java/info/nightscout/androidaps/plugins/pump/insight/activities/InsightPairingActivity.java +++ b/insight/src/main/java/info/nightscout/androidaps/plugins/pump/insight/activities/InsightPairingActivity.java @@ -39,6 +39,7 @@ import info.nightscout.androidaps.plugins.pump.common.ble.BlePreCheck; import info.nightscout.androidaps.plugins.pump.insight.connection_service.InsightConnectionService; import info.nightscout.androidaps.plugins.pump.insight.descriptors.InsightState; import info.nightscout.androidaps.plugins.pump.insight.utils.ExceptionTranslator; +import info.nightscout.androidaps.extensions.IntentExtensionKt; public class InsightPairingActivity extends NoSplashAppCompatActivity implements InsightConnectionService.StateCallback, View.OnClickListener, InsightConnectionService.ExceptionCallback { @@ -234,7 +235,8 @@ public class InsightPairingActivity extends NoSplashAppCompatActivity implements if (action.equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)) ((BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE)).getAdapter().startDiscovery(); else if (action.equals(BluetoothDevice.ACTION_FOUND)) { - BluetoothDevice bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); + BluetoothDevice bluetoothDevice = + IntentExtensionKt.safeGetParcelableExtra(intent, BluetoothDevice.EXTRA_DEVICE, BluetoothDevice.class); deviceAdapter.addDevice(bluetoothDevice); } } diff --git a/pump-common/src/main/java/info/nightscout/androidaps/plugins/pump/common/ble/BondStateReceiver.kt b/pump-common/src/main/java/info/nightscout/androidaps/plugins/pump/common/ble/BondStateReceiver.kt index 26b2f905e3..3105e3842c 100644 --- a/pump-common/src/main/java/info/nightscout/androidaps/plugins/pump/common/ble/BondStateReceiver.kt +++ b/pump-common/src/main/java/info/nightscout/androidaps/plugins/pump/common/ble/BondStateReceiver.kt @@ -6,6 +6,7 @@ import android.content.Intent import androidx.annotation.StringRes import com.google.gson.Gson import dagger.android.DaggerBroadcastReceiver +import info.nightscout.androidaps.extensions.safeGetParcelableExtra import info.nightscout.androidaps.interfaces.ResourceHelper import info.nightscout.androidaps.plugins.bus.RxBus import info.nightscout.androidaps.plugins.pump.common.events.EventPumpConnectionParametersChanged @@ -17,8 +18,8 @@ import javax.inject.Inject class BondStateReceiver( @StringRes var deviceAddress: Int, @StringRes var bondedFlag: Int, - var targetDevice: String, - var targetState: Int + private var targetDevice: String, + private var targetState: Int ) : DaggerBroadcastReceiver() { @Inject lateinit var sp: SP @@ -33,7 +34,7 @@ class BondStateReceiver( override fun onReceive(context: Context, intent: Intent) { super.onReceive(context, intent) val action = intent.action - val device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE, BluetoothDevice::class.java) + val device = intent.safeGetParcelableExtra(BluetoothDevice.EXTRA_DEVICE, BluetoothDevice::class.java) aapsLogger.info(LTag.PUMPBTCOMM, "in onReceive: INTENT" + gson.toJson(intent)) if (device == null) { aapsLogger.error(LTag.PUMPBTCOMM, "onReceive. Device is null. Exiting.")