chore: update `targetSdk` to API 34

pull/1144/head^2
andrekir 2024-07-21 09:59:37 -03:00 zatwierdzone przez Andre K
rodzic de180f2d35
commit e31b7d4911
8 zmienionych plików z 25 dodań i 6 usunięć

Wyświetl plik

@ -114,7 +114,7 @@ jobs:
timeout-minutes: 30 timeout-minutes: 30
strategy: strategy:
matrix: matrix:
api-level: [26, 33] api-level: [26, 34]
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4

Wyświetl plik

@ -37,7 +37,7 @@ android {
defaultConfig { defaultConfig {
applicationId "com.geeksville.mesh" applicationId "com.geeksville.mesh"
minSdkVersion 21 // The oldest emulator image I have tried is 22 (though 21 probably works) minSdkVersion 21 // The oldest emulator image I have tried is 22 (though 21 probably works)
targetSdk 33 targetSdk 34
versionCode 30315 // format is Mmmss (where M is 1+the numeric major number versionCode 30315 // format is Mmmss (where M is 1+the numeric major number
versionName "2.3.15" versionName "2.3.15"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

Wyświetl plik

@ -47,6 +47,7 @@
<!-- We run our mesh code as a foreground service - FIXME, find a way to stop doing this --> <!-- We run our mesh code as a foreground service - FIXME, find a way to stop doing this -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" />
<!-- Needed to open our bluetooth connection to our paired device (after reboot) --> <!-- Needed to open our bluetooth connection to our paired device (after reboot) -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
@ -101,11 +102,13 @@
android:value="false" /> android:value="false" />
<!-- we need bind job service for oreo --> <!-- we need bind job service for oreo -->
<!--
<service <service
android:name="com.geeksville.mesh.service.SoftwareUpdateService" android:name="com.geeksville.mesh.service.SoftwareUpdateService"
android:enabled="true" android:enabled="true"
android:exported="false" android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE" /> android:permission="android.permission.BIND_JOB_SERVICE" />
-->
<!-- This is the public API for doing mesh radio operations from android apps --> <!-- This is the public API for doing mesh radio operations from android apps -->
<service <service

Wyświetl plik

@ -6,6 +6,7 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.IntentFilter import android.content.IntentFilter
import androidx.annotation.RequiresPermission import androidx.annotation.RequiresPermission
import com.geeksville.mesh.util.registerReceiverCompat
import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.callbackFlow
@ -24,7 +25,7 @@ internal fun BluetoothDevice.createBond(context: Context): Flow<Int> = callbackF
} }
} }
val filter = IntentFilter(BluetoothDevice.ACTION_BOND_STATE_CHANGED) val filter = IntentFilter(BluetoothDevice.ACTION_BOND_STATE_CHANGED)
context.registerReceiver(receiver, filter) context.registerReceiverCompat(receiver, filter)
createBond() createBond()
awaitClose { context.unregisterReceiver(receiver) } awaitClose { context.unregisterReceiver(receiver) }

Wyświetl plik

@ -14,6 +14,7 @@ import androidx.lifecycle.coroutineScope
import com.geeksville.mesh.android.Logging import com.geeksville.mesh.android.Logging
import com.geeksville.mesh.CoroutineDispatchers import com.geeksville.mesh.CoroutineDispatchers
import com.geeksville.mesh.android.hasBluetoothPermission import com.geeksville.mesh.android.hasBluetoothPermission
import com.geeksville.mesh.util.registerReceiverCompat
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
@ -46,7 +47,7 @@ class BluetoothRepository @Inject constructor(
processLifecycle.coroutineScope.launch(dispatchers.default) { processLifecycle.coroutineScope.launch(dispatchers.default) {
updateBluetoothState() updateBluetoothState()
bluetoothBroadcastReceiverLazy.get().let { receiver -> bluetoothBroadcastReceiverLazy.get().let { receiver ->
application.registerReceiver(receiver, receiver.intentFilter) application.registerReceiverCompat(receiver, receiver.intentFilter)
} }
} }
} }

Wyświetl plik

@ -8,6 +8,7 @@ import android.content.IntentFilter
import android.hardware.usb.UsbDevice import android.hardware.usb.UsbDevice
import android.hardware.usb.UsbManager import android.hardware.usb.UsbManager
import com.geeksville.mesh.util.PendingIntentCompat import com.geeksville.mesh.util.PendingIntentCompat
import com.geeksville.mesh.util.registerReceiverCompat
import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.callbackFlow
@ -32,7 +33,7 @@ internal fun UsbManager.requestPermission(
PendingIntentCompat.FLAG_MUTABLE PendingIntentCompat.FLAG_MUTABLE
) )
val filter = IntentFilter(ACTION_USB_PERMISSION) val filter = IntentFilter(ACTION_USB_PERMISSION)
context.registerReceiver(receiver, filter) context.registerReceiverCompat(receiver, filter)
requestPermission(device, permissionIntent) requestPermission(device, permissionIntent)
awaitClose { context.unregisterReceiver(receiver) } awaitClose { context.unregisterReceiver(receiver) }

Wyświetl plik

@ -7,6 +7,7 @@ import androidx.lifecycle.Lifecycle
import androidx.lifecycle.coroutineScope import androidx.lifecycle.coroutineScope
import com.geeksville.mesh.android.Logging import com.geeksville.mesh.android.Logging
import com.geeksville.mesh.CoroutineDispatchers import com.geeksville.mesh.CoroutineDispatchers
import com.geeksville.mesh.util.registerReceiverCompat
import com.hoho.android.usbserial.driver.UsbSerialDriver import com.hoho.android.usbserial.driver.UsbSerialDriver
import com.hoho.android.usbserial.driver.UsbSerialProber import com.hoho.android.usbserial.driver.UsbSerialProber
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi
@ -62,7 +63,7 @@ class UsbRepository @Inject constructor(
processLifecycle.coroutineScope.launch(dispatchers.default) { processLifecycle.coroutineScope.launch(dispatchers.default) {
refreshStateInternal() refreshStateInternal()
usbBroadcastReceiverLazy.get().let { receiver -> usbBroadcastReceiverLazy.get().let { receiver ->
application.registerReceiver(receiver, receiver.intentFilter) application.registerReceiverCompat(receiver, receiver.intentFilter)
} }
} }
} }

Wyświetl plik

@ -5,11 +5,15 @@ import android.bluetooth.BluetoothDevice
import android.bluetooth.le.ScanResult import android.bluetooth.le.ScanResult
import android.companion.AssociationInfo import android.companion.AssociationInfo
import android.companion.CompanionDeviceManager import android.companion.CompanionDeviceManager
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.IntentFilter
import android.content.pm.PackageInfo import android.content.pm.PackageInfo
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.os.Parcel import android.os.Parcel
import android.os.Parcelable import android.os.Parcelable
import androidx.core.content.ContextCompat
import androidx.core.content.IntentCompat import androidx.core.content.IntentCompat
import androidx.core.os.ParcelCompat import androidx.core.os.ParcelCompat
@ -40,6 +44,14 @@ fun PackageManager.getPackageInfoCompat(packageName: String, flags: Int = 0): Pa
@Suppress("DEPRECATION") getPackageInfo(packageName, flags) @Suppress("DEPRECATION") getPackageInfo(packageName, flags)
} }
fun Context.registerReceiverCompat(
receiver: BroadcastReceiver,
filter: IntentFilter,
flag: Int = ContextCompat.RECEIVER_NOT_EXPORTED,
) {
ContextCompat.registerReceiver(this, receiver, filter, flag)
}
fun Intent.getAssociationResult(): String? = when { fun Intent.getAssociationResult(): String? = when {
android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.TIRAMISU -> android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.TIRAMISU ->
getParcelableExtraCompat<AssociationInfo>(CompanionDeviceManager.EXTRA_ASSOCIATION) getParcelableExtraCompat<AssociationInfo>(CompanionDeviceManager.EXTRA_ASSOCIATION)