待定意图在 Android 12 上不起作用

问题描述 投票:0回答:1

请阅读下面的 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 上崩溃

android crash android-pendingintent
1个回答
0
投票

我不知道你的具体错误,但可能是创建 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);
}
© www.soinside.com 2019 - 2024. All rights reserved.