Use PendingIntentCompat for mutable flag
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -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
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user