From a51405d1690d62e57a37df04919c22431b1fbe73 Mon Sep 17 00:00:00 2001 From: Yussuf Khalil Date: Sun, 4 Jun 2023 12:55:30 +0200 Subject: [PATCH] Specify mutability for USB and NFC intents Required for Android >= 12 as per [1]. Intents must be mutable to allow the platform framework to specify NFC/USB device extras. [1] https://developer.android.com/guide/components/intents-filters#DeclareMutabilityPendingIntent --- app/src/main/java/net/pp3345/ykdroid/ConnectionManager.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/net/pp3345/ykdroid/ConnectionManager.java b/app/src/main/java/net/pp3345/ykdroid/ConnectionManager.java index 7688633..94171d0 100644 --- a/app/src/main/java/net/pp3345/ykdroid/ConnectionManager.java +++ b/app/src/main/java/net/pp3345/ykdroid/ConnectionManager.java @@ -13,6 +13,7 @@ import android.nfc.NfcAdapter; import android.nfc.Tag; import android.nfc.tech.IsoDep; +import android.os.Build; import android.os.Bundle; import net.pp3345.ykdroid.yubikey.NfcYubiKey; @@ -110,7 +111,7 @@ public void onActivityResumed(final Activity activity) { final IntentFilter filter = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); NfcAdapter.getDefaultAdapter(this.activity).enableForegroundDispatch(this.activity, - PendingIntent.getActivity(this.activity, -1, new Intent(this.activity, this.activity.getClass()), 0), + PendingIntent.getActivity(this.activity, -1, new Intent(this.activity, this.activity.getClass()), Build.VERSION.SDK_INT >= 23 ? PendingIntent.FLAG_MUTABLE : 0), new IntentFilter[]{filter}, new String[][]{new String[]{IsoDep.class.getName()}}); this.isActivityResumed = true; @@ -215,7 +216,7 @@ private void requestPermission(final UsbDevice device) { this.connectReceiver.onYubiKeyConnected(new UsbYubiKey(device, usbManager.openDevice(device))); this.connectReceiver = null; } else { - usbManager.requestPermission(device, PendingIntent.getBroadcast(this.activity, 0, new Intent(ACTION_USB_PERMISSION_REQUEST), 0)); + usbManager.requestPermission(device, PendingIntent.getBroadcast(this.activity, 0, new Intent(ACTION_USB_PERMISSION_REQUEST), Build.VERSION.SDK_INT >= 23 ? PendingIntent.FLAG_MUTABLE : 0)); } }