请阅读下面的 PendingIntent 并针对我的项目进行更正。
广播类:
intent = new Intent(context, MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK), PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
主要活动:
pendingIntent = PendingIntent.getBroadcast(this, 0, intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK), PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
更正 PendingIntent,因为应用程序在 Android 12 上崩溃
我不知道你的具体错误,但可能是创建 PendingIntent 时必须指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 的错误报告。 Google 文档强烈考虑使用 FLAG_IMMUTABLE,并告诉您仅当某些功能依赖于可更改的 PendingIntent 时才使用 FLAG_MUTABLE。
那么,如何修复这个错误呢?
如果将以下库添加到应用程序级的build.gradle文件中并运行应用程序,错误将得到解决。如果您的应用使用 AdMob 20.4.0 或更早版本,则必须添加以下任务管理器依赖项。
实现“androidx.work:work-runtime:2.7.1” 但是,如果源代码中有使用 PendingIntent 的代码,则需要指定一个标志值。
我会给你我的相关代码。这对我有用。
PendingIntent sPpendingIntent;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
sPpendingIntent = PendingIntent.getActivity(context,
NOTIFICATION_ID, sIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
}else {
sPpendingIntent = PendingIntent.getActivity(context, NOTIFICATION_ID, sIntent, PendingIntent.FLAG_UPDATE_CURRENT);
}