当前位置: 首页 > 知识库问答 >
问题:

针对S(版本33)要求指定FLAG_IMMUTABLE或FLAG_MUTABLE之一

夏晋
2023-03-14

应用程序在运行时崩溃并出现以下错误:

以S为目标(31版及更高版本)要求在创建PendingIntent时指定FLAG_IMMUTABLE或FLAG_MUTABLE之一。强烈考虑使用FLAG_IMMUTABLE,仅当某些功能依赖于PendingIntent是可变的时才使用FLAG_MUTABLE,例如,如果它需要与内联回复或气泡一起使用。

我尝试了所有可用的解决方案,但该应用程序在Android 12上仍然崩溃。

private Notification buildNotification() {
    int playButtonResId = isPaused ? R.drawable.ic_play_arrow_white_24dp : R.drawable.ic_pause_white_24dp;

    PendingIntent clickIntent = PendingIntent.getActivity(
            this, 1,
            new Intent(this, MainActivity.class),
            PendingIntent.FLAG_IMMUTABLE);

共有1个答案

曹沛
2023-03-14
PendingIntent clickIntent;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
    clickIntent = PendingIntent.getActivity(
        getApplicationContext(),
        1,
        intent, 
        PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT
    );
} else {
    clickIntent = PendingIntent.getActivity(getApplicationContext(), 1, intent, 0);
}
 类似资料: