gpt4 book ai didi

java - FCM 致命异常 : java. lang.IllegalStateException 不允许启动服务 Intent

转载 作者:搜寻专家 更新时间:2023-11-01 09:27:03 26 4
gpt4 key购买 nike

我正在使用“com.google.firebase:firebase-messaging:11.8.0”,但一些装有 android 8 的设备出现此错误 java.lang.IllegalStateException 不允许启动服务 Intent。经过研究,我没有发现关于如何解决这个问题的明确内容。

代码:

public class FirebaseMessagesService extends FirebaseMessagingService {


public static final String FCM_ACTION_MESSAGE = "com.project.services.fcm.ACTION_MESSAGE";
public static final String EXTRA_MESSAGE = "VALUE";

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Gson gson = new Gson();
Log.d("FCM", gson.toJson(remoteMessage.getData()));
FirebaseMessage message = gson.fromJson(gson.toJson(remoteMessage.getData()), FirebaseMessage.class);
Intent intent = new Intent(FCM_ACTION_MESSAGE);
intent.setPackage("com.project");
intent.putExtra(EXTRA_MESSAGE, message);
startService(intent);
}

知道如何使用 FCM 在 android 8 上避免此 IllegalStateException 吗?

最佳答案

从 android O 开始,您无法在后台启动 IntentService。您需要为其创建后台服务。

除此之外,您还需要执行以下操作:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
startForegroundService(intent)
} else {
startService(intent);
}

onHandleIntent 中执行以下操作:

 if (Build.VERSION.SDK_INT >= 26) {
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
mBuilder.setSmallIcon(R.drawable.ic_launcher);
mBuilder.setContentTitle("FCM Notif");
mBuilder.setContentText("Processing notification..");
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

// notificationID allows you to update the notification later on.
mNotificationManager.notify(100, mBuilder.build());
startForeground(100, mBuilder.mNotification);
}

关于java - FCM 致命异常 : java. lang.IllegalStateException 不允许启动服务 Intent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49784925/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com