Use PendingIntentCompat for mutable flag

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2024-06-11 12:07:23 +05:30
parent 197fe5094f
commit 285571f387
4 changed files with 28 additions and 28 deletions

View File

@@ -34,6 +34,7 @@ import android.util.TypedValue
import android.view.LayoutInflater import android.view.LayoutInflater
import androidx.browser.customtabs.CustomTabsIntent import androidx.browser.customtabs.CustomTabsIntent
import androidx.core.app.ActivityOptionsCompat import androidx.core.app.ActivityOptionsCompat
import androidx.core.app.PendingIntentCompat
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.toBitmap import androidx.core.graphics.drawable.toBitmap
import com.aurora.Constants import com.aurora.Constants
@@ -56,16 +57,17 @@ fun Context.browse(url: String, showOpenInAuroraAction: Boolean = false) {
if (showOpenInAuroraAction) { if (showOpenInAuroraAction) {
val icon = val icon =
ContextCompat.getDrawable(this, R.drawable.ic_open_in_new)?.toBitmap() ContextCompat.getDrawable(this, R.drawable.ic_open_in_new)?.toBitmap()
val pendingIntent = PendingIntent.getActivity( val pendingIntent = PendingIntentCompat.getActivity(
this, this,
0, 0,
Intent(this, MainActivity::class.java), Intent(this, MainActivity::class.java),
PendingIntent.FLAG_MUTABLE 0,
false
) )
customTabsIntent.setActionButton( customTabsIntent.setActionButton(
icon!!, icon!!,
this.getString(R.string.open_in_aurora), this.getString(R.string.open_in_aurora),
pendingIntent, pendingIntent!!,
true true
) )
} }

View File

@@ -29,6 +29,7 @@ import android.content.pm.PackageInstaller.PACKAGE_SOURCE_STORE
import android.content.pm.PackageInstaller.SessionParams import android.content.pm.PackageInstaller.SessionParams
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.os.Process import android.os.Process
import androidx.core.app.PendingIntentCompat
import com.aurora.extensions.isNAndAbove import com.aurora.extensions.isNAndAbove
import com.aurora.extensions.isOAndAbove import com.aurora.extensions.isOAndAbove
import com.aurora.extensions.isSAndAbove import com.aurora.extensions.isSAndAbove
@@ -188,11 +189,11 @@ class SessionInstaller @Inject constructor(
private fun commitInstall(packageName: String, sessionId: Int) { private fun commitInstall(packageName: String, sessionId: Int) {
Log.i("Starting install session for $packageName") Log.i("Starting install session for $packageName")
val session = packageInstaller.openSession(sessionId) val session = packageInstaller.openSession(sessionId)
session.commit(getCallBackIntent(packageName, sessionId).intentSender) session.commit(getCallBackIntent(packageName, sessionId)!!.intentSender)
session.close() session.close()
} }
private fun getCallBackIntent(packageName: String, sessionId: Int): PendingIntent { private fun getCallBackIntent(packageName: String, sessionId: Int): PendingIntent? {
val callBackIntent = Intent(context, InstallerStatusReceiver::class.java).apply { val callBackIntent = Intent(context, InstallerStatusReceiver::class.java).apply {
action = InstallerStatusReceiver.ACTION_INSTALL_STATUS action = InstallerStatusReceiver.ACTION_INSTALL_STATUS
setPackage(context.packageName) setPackage(context.packageName)
@@ -200,12 +201,13 @@ class SessionInstaller @Inject constructor(
putExtra(EXTRA_DOWNLOAD, download) putExtra(EXTRA_DOWNLOAD, download)
addFlags(Intent.FLAG_RECEIVER_FOREGROUND) addFlags(Intent.FLAG_RECEIVER_FOREGROUND)
} }
val flags = if (isSAndAbove()) {
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE
} else {
PendingIntent.FLAG_UPDATE_CURRENT
}
return PendingIntent.getBroadcast(context, sessionId, callBackIntent, flags) return PendingIntentCompat.getBroadcast(
context,
sessionId,
callBackIntent,
PendingIntent.FLAG_UPDATE_CURRENT,
true
)
} }
} }

View File

@@ -28,6 +28,7 @@ import android.os.Build
import android.os.IBinder import android.os.IBinder
import android.os.IInterface import android.os.IInterface
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import androidx.core.app.PendingIntentCompat
import com.aurora.extensions.isOAndAbove import com.aurora.extensions.isOAndAbove
import com.aurora.extensions.isSAndAbove import com.aurora.extensions.isSAndAbove
import com.aurora.store.R import com.aurora.store.R
@@ -153,21 +154,17 @@ class ShizukuInstaller @Inject constructor(
putExtra(PackageInstaller.EXTRA_PACKAGE_NAME, sharedLibPkgName.ifBlank { packageName }) putExtra(PackageInstaller.EXTRA_PACKAGE_NAME, sharedLibPkgName.ifBlank { packageName })
putExtra(EXTRA_DOWNLOAD, download) putExtra(EXTRA_DOWNLOAD, download)
} }
val flags = if (isSAndAbove()) {
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE
} else {
PendingIntent.FLAG_UPDATE_CURRENT
}
val pendingIntent = PendingIntent.getBroadcast( val pendingIntent = PendingIntentCompat.getBroadcast(
context, context,
sessionId, sessionId,
callBackIntent, callBackIntent,
flags PendingIntent.FLAG_UPDATE_CURRENT,
true
) )
Log.i("Starting install session for $packageName") Log.i("Starting install session for $packageName")
session.commit(pendingIntent.intentSender) session.commit(pendingIntent!!.intentSender)
session.close() session.close()
} catch (exception: Exception) { } catch (exception: Exception) {
session.abandon() session.abandon()

View File

@@ -11,13 +11,13 @@ import android.graphics.Bitmap
import android.graphics.Color import android.graphics.Color
import android.os.Build import android.os.Build
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import androidx.core.app.PendingIntentCompat
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
import androidx.navigation.NavDeepLinkBuilder import androidx.navigation.NavDeepLinkBuilder
import androidx.work.WorkManager import androidx.work.WorkManager
import com.aurora.Constants import com.aurora.Constants
import com.aurora.extensions.getStyledAttributeColor import com.aurora.extensions.getStyledAttributeColor
import com.aurora.extensions.isMAndAbove
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.MainActivity import com.aurora.store.MainActivity
import com.aurora.store.data.room.download.Download as AuroraDownload import com.aurora.store.data.room.download.Download as AuroraDownload
@@ -262,17 +262,16 @@ object NotificationUtil {
.createPendingIntent() .createPendingIntent()
} }
private fun getInstallIntent(context: Context, download: Download): PendingIntent { private fun getInstallIntent(context: Context, download: Download): PendingIntent? {
val intent = Intent(context, InstallActivity::class.java).apply { val intent = Intent(context, InstallActivity::class.java).apply {
putExtra(Constants.PARCEL_DOWNLOAD, download) putExtra(Constants.PARCEL_DOWNLOAD, download)
} }
val flags = if (isMAndAbove()) { return PendingIntentCompat.getActivity(
PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE context,
} else { download.packageName.hashCode(),
PendingIntent.FLAG_CANCEL_CURRENT intent,
} PendingIntent.FLAG_CANCEL_CURRENT,
return PendingIntent.getActivity( false
context, download.packageName.hashCode(), intent, flags
) )
} }
} }