gpt4 book ai didi

android - Android 2.3 上的推送通知崩溃。

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:57:17 26 4
gpt4 key购买 nike

我正在尝试向带有 GCM 的手机发送推送通知,它在装有 android 4 的设备上运行良好,但是当我尝试在 android 2.3 上发送通知时,应用程序崩溃并且我收到此错误

03-13 11:44:25.994: E/AndroidRuntime(3579): FATAL EXCEPTION: IntentService[GCMIntentService-1074787013996-1]
03-13 11:44:25.994: E/AndroidRuntime(3579): java.lang.IllegalArgumentException: contentIntent required: pkg=com.itom.vreauRCA id=0 notification=Notification(vibrate=default,sound=default,defaults=0xffffffff)
03-13 11:44:25.994: E/AndroidRuntime(3579): at android.os.Parcel.readException(Parcel.java:1251)
03-13 11:44:25.994: E/AndroidRuntime(3579): at android.os.Parcel.readException(Parcel.java:1235)
03-13 11:44:25.994: E/AndroidRuntime(3579): at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:274)
03-13 11:44:25.994: E/AndroidRuntime(3579): at android.app.NotificationManager.notify(NotificationManager.java:110)
03-13 11:44:25.994: E/AndroidRuntime(3579): at android.app.NotificationManager.notify(NotificationManager.java:90)
03-13 11:44:25.994: E/AndroidRuntime(3579): at com.itom.vreauRCA.GCMIntentService.generateNotification(GCMIntentService.java:71)
03-13 11:44:25.994: E/AndroidRuntime(3579): at com.itom.vreauRCA.GCMIntentService.onMessage(GCMIntentService.java:36)
03-13 11:44:25.994: E/AndroidRuntime(3579): at com.google.android.gcm.GCMBaseIntentService.onHandleIntent(GCMBaseIntentService.java:223)
03-13 11:44:25.994: E/AndroidRuntime(3579): at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:59)
03-13 11:44:25.994: E/AndroidRuntime(3579): at android.os.Handler.dispatchMessage(Handler.java:99)
03-13 11:44:25.994: E/AndroidRuntime(3579): at android.os.Looper.loop(Looper.java:123)
03-13 11:44:25.994: E/AndroidRuntime(3579): at android.os.HandlerThread.run(HandlerThread.java:60)
03-13 11:44:26.374: V/GCMBroadcastReceiver(3579): onReceive: com.google.android.c2dm.intent.RECEIVE
03-13 11:44:26.374: V/GCMBroadcastReceiver(3579): GCM IntentService class: com.itom.vreauRCA.GCMIntentService
03-13 11:44:26.374: V/GCMBaseIntentService(3579): Acquiring wakelock
03-13 11:44:26.414: V/GCMBroadcastReceiver(3579): onReceive: com.google.android.c2dm.intent.RECEIVE
03-13 11:44:26.414: V/GCMBroadcastReceiver(3579): GCM IntentService class: com.itom.vreauRCA.GCMIntentService
03-13 11:44:26.414: V/GCMBaseIntentService(3579): Acquiring wakelock

这是我的 GCMBaseIntentService 类

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

import com.google.android.gcm.GCMBaseIntentService;

public class GCMIntentService extends GCMBaseIntentService {
private static final String TAG = "GCMIntentService";
PendingIntent contentIntent;

public GCMIntentService() {
super(GetObiecte.SENDER_ID);
}

@Override
protected void onRegistered(Context context, String registrationId) {
Log.i(TAG, "Device registered: regId = " + registrationId);
Log.d("GCMIntentService", "in GCMIntentService");
}

@Override
protected void onUnregistered(Context context, String registrationId) {
Log.i(TAG, "Device unregistered");
}

@Override
protected void onMessage(Context context, Intent intent) {
Log.i(TAG, "Received message");
String a = intent.getStringExtra("data");
String b = intent.getStringExtra("data2");
generateNotification(context, a,b);
}

@Override
protected void onDeletedMessages(Context context, int total) {
Log.i(TAG, "Received deleted messages notification");
}

@Override
public void onError(Context context, String errorId) {
Log.i(TAG, "Received error: " + errorId);
}

@Override
protected boolean onRecoverableError(Context context, String errorId) {
Log.i(TAG, "Received recoverable error: " + errorId);
return super.onRecoverableError(context, errorId);
}

private void generateNotification(Context context, String message,
String title) {

NotificationManager notificationManager = (NotificationManager) context
.getSystemService(NOTIFICATION_SERVICE);

Notification notification = new Notification();
notification.icon = R.drawable.ic_launcher;
notification.tickerText = "i-Asigutare";
notification.defaults = Notification.DEFAULT_ALL;
notification.setLatestEventInfo(context, title, message, null);
notificationManager.notify(0, notification);
}
}

最佳答案

问题是关于 notification.setLatestEventInfo 方法。

这个方法是 deprecated API 级别 11 和 Notification.Builder 的用法受到鼓励。您也可以查看 NotificationCompat.Builder与支持库一起使用。

如果您仍然想按照自己的方式行事,您应该查看关于这个问题的已接受答案: Android - notification manager, having a notification without an intent

明确说明这样使用

notification.setLatestEventInfo(context, contentTitle, contentText, PendingIntent.getActivity(getApplicationContext(), 0, new Intent(), 0));

关于android - Android 2.3 上的推送通知崩溃。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15381873/

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