From 5a26b26880539e4c54e8457290a8586a0a086ca8 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Mon, 17 Jun 2024 15:10:33 -0700
Subject: [PATCH] Fixed requesting USB permission on Android 14 (thanks
@ikhoeyZX!)
Fixes https://github.com/libsdl-org/SDL/issues/9831
(cherry picked from commit 8ab1ffca8abe8c7db5bdf24175b724374b78579e)
---
.../src/main/java/org/libsdl/app/HIDDeviceManager.java | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/android-project/app/src/main/java/org/libsdl/app/HIDDeviceManager.java b/android-project/app/src/main/java/org/libsdl/app/HIDDeviceManager.java
index e7281fdf26ac4..ea6b5d5b17a18 100644
--- a/android-project/app/src/main/java/org/libsdl/app/HIDDeviceManager.java
+++ b/android-project/app/src/main/java/org/libsdl/app/HIDDeviceManager.java
@@ -590,7 +590,13 @@ public boolean openDevice(int deviceID) {
} else {
flags = 0;
}
- mUsbManager.requestPermission(usbDevice, PendingIntent.getBroadcast(mContext, 0, new Intent(HIDDeviceManager.ACTION_USB_PERMISSION), flags));
+ if (Build.VERSION.SDK_INT >= 33 /* Android 14.0 (U) */) {
+ Intent intent = new Intent(HIDDeviceManager.ACTION_USB_PERMISSION);
+ intent.setPackage(mContext.getPackageName());
+ mUsbManager.requestPermission(usbDevice, PendingIntent.getBroadcast(mContext, 0, intent, flags));
+ } else {
+ mUsbManager.requestPermission(usbDevice, PendingIntent.getBroadcast(mContext, 0, new Intent(HIDDeviceManager.ACTION_USB_PERMISSION), flags));
+ }
} catch (Exception e) {
Log.v(TAG, "Couldn't request permission for USB device " + usbDevice);
HIDDeviceOpenResult(deviceID, false);