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 androidx.browser.customtabs.CustomTabsIntent
import androidx.core.app.ActivityOptionsCompat
import androidx.core.app.PendingIntentCompat
import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.toBitmap
import com.aurora.Constants
@@ -56,16 +57,17 @@ fun Context.browse(url: String, showOpenInAuroraAction: Boolean = false) {
if (showOpenInAuroraAction) {
val icon =
ContextCompat.getDrawable(this, R.drawable.ic_open_in_new)?.toBitmap()
val pendingIntent = PendingIntent.getActivity(
val pendingIntent = PendingIntentCompat.getActivity(
this,
0,
Intent(this, MainActivity::class.java),
PendingIntent.FLAG_MUTABLE
0,
false
)
customTabsIntent.setActionButton(
icon!!,
this.getString(R.string.open_in_aurora),
pendingIntent,
pendingIntent!!,
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.PackageManager
import android.os.Process
import androidx.core.app.PendingIntentCompat
import com.aurora.extensions.isNAndAbove
import com.aurora.extensions.isOAndAbove
import com.aurora.extensions.isSAndAbove
@@ -188,11 +189,11 @@ class SessionInstaller @Inject constructor(
private fun commitInstall(packageName: String, sessionId: Int) {
Log.i("Starting install session for $packageName")
val session = packageInstaller.openSession(sessionId)
session.commit(getCallBackIntent(packageName, sessionId).intentSender)
session.commit(getCallBackIntent(packageName, sessionId)!!.intentSender)
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 {
action = InstallerStatusReceiver.ACTION_INSTALL_STATUS
setPackage(context.packageName)
@@ -200,12 +201,13 @@ class SessionInstaller @Inject constructor(
putExtra(EXTRA_DOWNLOAD, download)
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.IInterface
import androidx.annotation.RequiresApi
import androidx.core.app.PendingIntentCompat
import com.aurora.extensions.isOAndAbove
import com.aurora.extensions.isSAndAbove
import com.aurora.store.R
@@ -153,21 +154,17 @@ class ShizukuInstaller @Inject constructor(
putExtra(PackageInstaller.EXTRA_PACKAGE_NAME, sharedLibPkgName.ifBlank { packageName })
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,
sessionId,
callBackIntent,
flags
PendingIntent.FLAG_UPDATE_CURRENT,
true
)
Log.i("Starting install session for $packageName")
session.commit(pendingIntent.intentSender)
session.commit(pendingIntent!!.intentSender)
session.close()
} catch (exception: Exception) {
session.abandon()

View File

@@ -11,13 +11,13 @@ import android.graphics.Bitmap
import android.graphics.Color
import android.os.Build
import androidx.core.app.NotificationCompat
import androidx.core.app.PendingIntentCompat
import androidx.core.content.ContextCompat
import androidx.core.os.bundleOf
import androidx.navigation.NavDeepLinkBuilder
import androidx.work.WorkManager
import com.aurora.Constants
import com.aurora.extensions.getStyledAttributeColor
import com.aurora.extensions.isMAndAbove
import com.aurora.gplayapi.data.models.App
import com.aurora.store.MainActivity
import com.aurora.store.data.room.download.Download as AuroraDownload
@@ -262,17 +262,16 @@ object NotificationUtil {
.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 {
putExtra(Constants.PARCEL_DOWNLOAD, download)
}
val flags = if (isMAndAbove()) {
PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE
} else {
PendingIntent.FLAG_CANCEL_CURRENT
}
return PendingIntent.getActivity(
context, download.packageName.hashCode(), intent, flags
return PendingIntentCompat.getActivity(
context,
download.packageName.hashCode(),
intent,
PendingIntent.FLAG_CANCEL_CURRENT,
false
)
}
}