java.lang.nosuchmethoderror:类landroid/usport/v4/v4/app/notif



我被卡在推送通知中。我正在处理旧版本代码。我已经对其进行了更新,并在应用程序 build.gradle 中添加firebase依赖项后。HEN应用程序在后台崩溃,以下错误。但是在前景中,我收到了通知。请帮我。构建等级在这里

E/AndroidRuntime: FATAL EXCEPTION: Firebase-MyFirebaseMessagingService
Process: PID: 9735
java.lang.NoSuchMethodError: No direct method <init>(Landroid/content/Context;Ljava/lang/String;)V in class Landroid/support/v4/app/NotificationCompat$Builder; or its super classes (declaration of 'android.support.v4.app.NotificationCompat$Builder' appears in /data/app/com.affichi-2/split_lib_dependencies_apk.apk)
    at com.google.firebase.messaging.zzb.zzf(Unknown Source)
    at com.google.firebase.messaging.zzc.zzas(Unknown Source)
    at com.google.firebase.messaging.FirebaseMessagingService.zzd(Unknown Source)
    at com.google.firebase.iid.zzb.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
    at com.google.android.gms.common.util.concurrent.zza.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:818)

请检查此类: -

public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    try {
        if (remoteMessage.getNotification() != null) {
            Log.e("remoteMessage1", "=" + remoteMessage.getNotification().getTitle());
            Log.e("remoteMessage2", "=" + remoteMessage.getNotification().getBody());
            Log.e("remoteMessage5", "=" + remoteMessage.getData());
            sendNotification(remoteMessage.getData());
            //sendNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody(), remoteMessage.getData());
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
private void sendNotification(String title, String messageBody, java.util.Map<java.lang.String, java.lang.String> getData) {
    try {
        Intent intent = null;
        intent = new Intent(this, HomeActivity.class);
        int oneTimeID = (int) SystemClock.uptimeMillis();
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, oneTimeID /* Request code */, intent,
                PendingIntent.FLAG_ONE_SHOT);
        String channelId = getString(R.string.default_notification_channel_id);
        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        Notification.Builder notificationBuilder =
                new Notification.Builder(this)
                        .setSmallIcon(R.drawable.app_icon)
                        .setContentTitle(title)
                        .setContentText(messageBody)
                        .setAutoCancel(true)
                        .setPriority(Notification.PRIORITY_MAX)
                        .setSound(defaultSoundUri)
                        .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE)
                        .setContentIntent(pendingIntent);
        NotificationManager notificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel channel = new NotificationChannel(channelId,
                    "Afifchi",
                    NotificationManager.IMPORTANCE_DEFAULT);
            assert notificationManager != null;
            notificationManager.createNotificationChannel(channel);
        }
        assert notificationManager != null;
        notificationManager.notify(oneTimeID /* ID of notification */, notificationBuilder.build());
    } catch (Exception e) {
        e.printStackTrace();
    }
}
private void sendNotification(Map<String, String> messageBody) {
    Intent intent = new Intent(this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
    String channelId = getString(R.string.default_notification_channel_id);
    Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder =
            new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.ic_launcher)
                    .setContentTitle(messageBody.get("title"))
                    .setContentText(messageBody.get("message"))
                    .setAutoCancel(true)
                    .setSound(defaultSoundUri)
                    .setContentIntent(pendingIntent);
    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    // Since android Oreo notification channel is needed.
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        NotificationChannel channel = new NotificationChannel(channelId, "Channel human readable title", NotificationManager.IMPORTANCE_DEFAULT);
        notificationManager.createNotificationChannel(channel);
    }
    notificationManager.notify(0, notificationBuilder.build());
}

}

您正在为 NotificationCompat.Builder (Context context)

使用弃用的构造函数

而是使用此构造函数:NotificationCompat.Builder (Context context, String channelId)

而是使用此。

Notification notification =
            new NotificationCompat.Builder(this, CHANNEL_ID)
                    .setContentTitle(getText(R.string.notification_title))
                    .setContentText("Waiting for internet connection to forward sold products while offline")
                    .setSmallIcon(R.drawable.ic_notification_orange)
                    .setContentIntent(pendingIntent)
                    .setTicker("Hello Benjie")
                    .build();

相关内容

  • 没有找到相关文章

最新更新