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 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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user