From ab27c19dc3ab14f46e62f01542ad1cdf17b6565a Mon Sep 17 00:00:00 2001 From: kai-morich Date: Thu, 21 Jul 2022 21:37:32 +0200 Subject: [PATCH] sdk 31 fixes: pending intent mutability --- usbSerialExamples/build.gradle | 4 ++-- .../hoho/android/usbserial/examples/TerminalFragment.java | 4 +++- usbSerialForAndroid/build.gradle | 6 +++--- .../java/com/hoho/android/usbserial/util/UsbWrapper.java | 6 ++++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/usbSerialExamples/build.gradle b/usbSerialExamples/build.gradle index cb15d39..7f1b57d 100644 --- a/usbSerialExamples/build.gradle +++ b/usbSerialExamples/build.gradle @@ -3,7 +3,7 @@ plugins { } android { - compileSdkVersion 31 + compileSdkVersion 32 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -12,7 +12,7 @@ android { defaultConfig { minSdkVersion 17 - targetSdkVersion 31 + targetSdkVersion 32 vectorDrawables.useSupportLibrary = true missingDimensionStrategy 'device', 'anyDevice' diff --git a/usbSerialExamples/src/main/java/com/hoho/android/usbserial/examples/TerminalFragment.java b/usbSerialExamples/src/main/java/com/hoho/android/usbserial/examples/TerminalFragment.java index 9224fa8..b80a7d4 100644 --- a/usbSerialExamples/src/main/java/com/hoho/android/usbserial/examples/TerminalFragment.java +++ b/usbSerialExamples/src/main/java/com/hoho/android/usbserial/examples/TerminalFragment.java @@ -8,6 +8,7 @@ import android.content.IntentFilter; import android.hardware.usb.UsbDevice; import android.hardware.usb.UsbDeviceConnection; import android.hardware.usb.UsbManager; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Looper; @@ -211,7 +212,8 @@ public class TerminalFragment extends Fragment implements SerialInputOutputManag UsbDeviceConnection usbConnection = usbManager.openDevice(driver.getDevice()); if(usbConnection == null && usbPermission == UsbPermission.Unknown && !usbManager.hasPermission(driver.getDevice())) { usbPermission = UsbPermission.Requested; - PendingIntent usbPermissionIntent = PendingIntent.getBroadcast(getActivity(), 0, new Intent(INTENT_ACTION_GRANT_USB), 0); + int flags = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M ? PendingIntent.FLAG_IMMUTABLE : 0; + PendingIntent usbPermissionIntent = PendingIntent.getBroadcast(getActivity(), 0, new Intent(INTENT_ACTION_GRANT_USB), flags); usbManager.requestPermission(driver.getDevice(), usbPermissionIntent); return; } diff --git a/usbSerialForAndroid/build.gradle b/usbSerialForAndroid/build.gradle index 3e4964b..0884040 100644 --- a/usbSerialForAndroid/build.gradle +++ b/usbSerialForAndroid/build.gradle @@ -4,16 +4,16 @@ plugins { } android { - compileSdkVersion 31 + compileSdkVersion 32 defaultConfig { minSdkVersion 17 - targetSdkVersion 31 + targetSdkVersion 32 consumerProguardFiles 'proguard-rules.pro' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunnerArguments = [ // Raspi Windows LinuxVM ... - 'rfc2217_server_host': '192.168.0.100', + 'rfc2217_server_host': '192.168.0.186', 'rfc2217_server_nonstandard_baudrates': 'true', // true false false ] } diff --git a/usbSerialForAndroid/src/androidTest/java/com/hoho/android/usbserial/util/UsbWrapper.java b/usbSerialForAndroid/src/androidTest/java/com/hoho/android/usbserial/util/UsbWrapper.java index 189a242..0d7e476 100644 --- a/usbSerialForAndroid/src/androidTest/java/com/hoho/android/usbserial/util/UsbWrapper.java +++ b/usbSerialForAndroid/src/androidTest/java/com/hoho/android/usbserial/util/UsbWrapper.java @@ -9,6 +9,7 @@ import android.hardware.usb.UsbDeviceConnection; import android.hardware.usb.UsbManager; import android.media.RingtoneManager; import android.net.Uri; +import android.os.Build; import android.util.Log; import com.hoho.android.usbserial.driver.CdcAcmSerialDriver; @@ -83,7 +84,8 @@ public class UsbWrapper implements SerialInputOutputManager.Listener { granted[0] = intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false); } }; - PendingIntent permissionIntent = PendingIntent.getBroadcast(context, 0, new Intent("com.android.example.USB_PERMISSION"), 0); + int flags = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M ? PendingIntent.FLAG_IMMUTABLE : 0; + PendingIntent permissionIntent = PendingIntent.getBroadcast(context, 0, new Intent("com.android.example.USB_PERMISSION"), flags); IntentFilter filter = new IntentFilter("com.android.example.USB_PERMISSION"); context.registerReceiver(usbReceiver, filter); usbManager.requestPermission(serialDriver.getDevice(), permissionIntent); @@ -92,7 +94,7 @@ public class UsbWrapper implements SerialInputOutputManager.Listener { Thread.sleep(1); } Log.d(TAG,"USB permission "+granted[0]); - assertTrue("USB permission dialog not confirmed", granted[0]==null?false:granted[0]); + assertTrue("USB permission dialog not confirmed", granted[0] != null && granted[0]); } // extract some device properties: