Skip to content

Commit 02b7abc

Browse files
p1gp1gmar-v-in
andauthored
Fido: fix support when targetSdk>=35 (#2887)
Co-authored-by: Marvin W <[email protected]>
1 parent 2bb0a9c commit 02b7abc

File tree

3 files changed

+19
-11
lines changed

3 files changed

+19
-11
lines changed

play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/nfc/NfcTransportHandler.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@
66
package org.microg.gms.fido.core.transport.nfc
77

88
import android.app.Activity
9+
import android.app.ActivityOptions
910
import android.app.PendingIntent
1011
import android.content.Intent
1112
import android.content.IntentFilter
1213
import android.nfc.NfcAdapter
1314
import android.nfc.Tag
1415
import android.nfc.tech.IsoDep
16+
import android.os.Build.VERSION.SDK_INT
1517
import android.util.Log
1618
import androidx.core.app.OnNewIntentProvider
1719
import androidx.core.app.PendingIntentCompat
@@ -39,7 +41,17 @@ class NfcTransportHandler(private val activity: Activity, callback: TransportHan
3941

4042
private suspend fun waitForNewNfcTag(adapter: NfcAdapter): Tag {
4143
val intent = Intent(activity, activity.javaClass).apply { addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP) }
42-
val pendingIntent: PendingIntent = PendingIntentCompat.getActivity(activity, 0, intent, 0, true)!!
44+
val piOptions = if (SDK_INT >= 34) {
45+
ActivityOptions.makeBasic().apply {
46+
pendingIntentCreatorBackgroundActivityStartMode =
47+
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED
48+
}.toBundle()
49+
} else null
50+
val pendingIntent: PendingIntent = PendingIntentCompat.getActivity(
51+
activity, 0, intent,
52+
0,
53+
piOptions,
54+
true)!!
4355
adapter.enableForegroundDispatch(
4456
activity,
4557
pendingIntent,

play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/UsbDevicePermissionManager.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55

66
package org.microg.gms.fido.core.transport.usb
77

8-
import android.app.PendingIntent
98
import android.content.BroadcastReceiver
109
import android.content.Context
1110
import android.content.Intent
1211
import android.content.IntentFilter
1312
import android.hardware.usb.UsbDevice
1413
import android.hardware.usb.UsbManager
15-
import android.os.Build.VERSION.SDK_INT
1614
import androidx.core.app.PendingIntentCompat
15+
import androidx.core.content.ContextCompat
16+
import androidx.core.content.ContextCompat.RECEIVER_NOT_EXPORTED
1717
import kotlinx.coroutines.CompletableDeferred
1818

1919
private val Context.usbPermissionCallbackAction
@@ -25,7 +25,7 @@ private object UsbDevicePermissionReceiver : BroadcastReceiver() {
2525

2626
fun register(context: Context) = synchronized(this) {
2727
if (!registered) {
28-
context.registerReceiver(this, IntentFilter(context.usbPermissionCallbackAction))
28+
ContextCompat.registerReceiver(context, this, IntentFilter(context.usbPermissionCallbackAction), RECEIVER_NOT_EXPORTED)
2929
registered = true
3030
}
3131
}

play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/UsbTransportHandler.kt

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,16 @@ import android.os.Bundle
1717
import android.util.Base64
1818
import android.util.Log
1919
import androidx.annotation.RequiresApi
20+
import androidx.core.content.ContextCompat
21+
import androidx.core.content.ContextCompat.RECEIVER_NOT_EXPORTED
2022
import com.google.android.gms.fido.fido2.api.common.*
21-
import com.upokecenter.cbor.CBORObject
2223
import kotlinx.coroutines.CancellationException
2324
import kotlinx.coroutines.CompletableDeferred
24-
import kotlinx.coroutines.delay
2525
import org.microg.gms.fido.core.*
26-
import org.microg.gms.fido.core.protocol.*
27-
import org.microg.gms.fido.core.protocol.msgs.*
28-
import org.microg.gms.fido.core.transport.CtapConnection
2926
import org.microg.gms.fido.core.transport.Transport
3027
import org.microg.gms.fido.core.transport.TransportHandler
3128
import org.microg.gms.fido.core.transport.TransportHandlerCallback
3229
import org.microg.gms.fido.core.transport.usb.ctaphid.CtapHidConnection
33-
import org.microg.gms.fido.core.transport.usb.ctaphid.CtapHidMessageStatusException
3430
import org.microg.gms.utils.toBase64
3531

3632
@RequiresApi(21)
@@ -112,7 +108,7 @@ class UsbTransportHandler(private val context: Context, callback: TransportHandl
112108
deferred.complete(device)
113109
}
114110
}
115-
context.registerReceiver(receiver, IntentFilter(UsbManager.ACTION_USB_DEVICE_ATTACHED))
111+
ContextCompat.registerReceiver(context, receiver, IntentFilter(UsbManager.ACTION_USB_DEVICE_ATTACHED), RECEIVER_NOT_EXPORTED)
116112
invokeStatusChanged(TransportHandlerCallback.STATUS_WAITING_FOR_DEVICE)
117113
val device = deferred.await()
118114
context.unregisterReceiver(receiver)

0 commit comments

Comments
 (0)