diff --git a/sdk/appcenter-distribute/src/main/java/com/microsoft/appcenter/distribute/install/session/InstallStatusReceiver.java b/sdk/appcenter-distribute/src/main/java/com/microsoft/appcenter/distribute/install/session/InstallStatusReceiver.java index 2a007b71c..212f77458 100644 --- a/sdk/appcenter-distribute/src/main/java/com/microsoft/appcenter/distribute/install/session/InstallStatusReceiver.java +++ b/sdk/appcenter-distribute/src/main/java/com/microsoft/appcenter/distribute/install/session/InstallStatusReceiver.java @@ -31,6 +31,8 @@ class InstallStatusReceiver extends BroadcastReceiver { @VisibleForTesting static final String INSTALL_STATUS_ACTION = "com.microsoft.appcenter.action.INSTALL_STATUS"; + @VisibleForTesting + static final String FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT_NAME = "FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT"; static IntentFilter getInstallerReceiverFilter() { IntentFilter installerReceiverFilter = new IntentFilter(); @@ -45,12 +47,12 @@ static IntentFilter getInstallerReceiverFilter() { * @param requestCode request code for the sender. * @return IntentSender with receiver. */ - static IntentSender getInstallStatusIntentSender(Context context, int requestCode) { + static IntentSender getInstallStatusIntentSender(Context context, int requestCode) throws NoSuchFieldException, IllegalAccessException { int broadcastFlags = 0; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { broadcastFlags = PendingIntent.FLAG_MUTABLE; if (Build.VERSION.SDK_INT >= 34) { - broadcastFlags |= PendingIntent.FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT; + broadcastFlags |= PendingIntent.class.getDeclaredField(FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT_NAME).getInt(PendingIntent.class); } } PendingIntent pendingIntent = PendingIntent.getBroadcast( diff --git a/sdk/appcenter-distribute/src/main/java/com/microsoft/appcenter/distribute/install/session/SessionReleaseInstaller.java b/sdk/appcenter-distribute/src/main/java/com/microsoft/appcenter/distribute/install/session/SessionReleaseInstaller.java index 1e40d2b4d..1651a2547 100644 --- a/sdk/appcenter-distribute/src/main/java/com/microsoft/appcenter/distribute/install/session/SessionReleaseInstaller.java +++ b/sdk/appcenter-distribute/src/main/java/com/microsoft/appcenter/distribute/install/session/SessionReleaseInstaller.java @@ -208,7 +208,7 @@ private synchronized void startInstallSession(@NonNull Uri localUri) { IntentSender statusReceiver = InstallStatusReceiver.getInstallStatusIntentSender(mContext, mSessionId); session.commit(statusReceiver); session.close(); - } catch (IOException | RuntimeException e) { + } catch (IOException | RuntimeException | NoSuchFieldException | IllegalAccessException e) { if (session != null) { session.abandon(); } diff --git a/versions.gradle b/versions.gradle index 1d23cdf61..f8f00f897 100644 --- a/versions.gradle +++ b/versions.gradle @@ -9,7 +9,7 @@ ext { versionCode = 72 versionName = '5.0.3' minSdkVersion = 21 - compileSdkVersion = 34 - targetSdkVersion = 34 + compileSdkVersion = 33 + targetSdkVersion = 33 annotationVersion = '1.2.0' } \ No newline at end of file