19

Android'de bir push bildirimi aldığımda, aşağıdaki hatayı alıyorum. Bununla ilgili hiçbir bilgi bulamıyorum. Biri yardım edebilir mi? Gerçekten kaybettim.Firebase handleIntent AbstractMethodError

FATAL EXCEPTION: pool-1-thread-1 Process: com.mycompany.myerror, PID: 22712 java.lang.AbstractMethodError: abstract method "void com.google.firebase.iid.zzb.handleIntent(android.content.Intent)" at com.google.firebase.iid.zzb$1.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818)

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:multidex:1.0.1' 
    compile 'com.android.support:appcompat-v7:25.3.0' 
    compile 'com.android.support:support-v4:25.3.0' 
    compile 'com.android.support:design:25.3.0' 
    //https://developers.google.com/android/guides/setup 
    compile 'com.google.android.gms:play-services-places:10.2.1' 
    compile 'com.google.android.gms:play-services-maps:10.2.1' 
    compile 'com.google.android.gms:play-services-location:10.2.1' 
    compile 'com.google.android.gms:play-services-vision:10.2.1' 
    compile 'com.google.android.gms:play-services-gcm:10.2.1' 
    compile 'com.google.firebase:firebase-messaging:10.0.1' 
    compile 'com.google.firebase:firebase-core:10.0.1' 
    compile 'com.squareup.picasso:picasso:2.5.2' 
    compile 'com.google.zxing:core:3.2.0' 
    compile 'com.journeyapps:zxing-android-embedded:3.5.0' 
    compile 'com.loopj.android:android-async-http:1.4.9' 
    testCompile 'junit:junit:4.12' 
} 

FirebaseMessagingService.java

public class FirebaseMessagingService extends FirebaseMessagingService { 

    private static final String TAG = "FCM Service"; 

    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 
     super.onMessageReceived(remoteMessage); 
     try { 
      sendNotification(remoteMessage); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 


    private void sendNotification(final RemoteMessage remoteMessage) throws Exception { 

     Calendar calendar = Calendar.getInstance(); 
     Calendar c = Calendar.getInstance(); 
     SimpleDateFormat sdf = new SimpleDateFormat("h:mm a"); 
     String strDate = sdf.format(c.getTime()); 

     String contentTitle = "New Push Message"; 
     String contentText = "Received at " + strDate; 

     Utilities.sendNotification(getApplicationContext(), 
       getNotificationIcon(), 
       contentTitle, 
       contentText, 
       0, 
       HomeActivity.class, 
       Utilities.getNotificationId(getApplicationContext())); 

    } 

Yardımcı

public static void sendNotification(Context appContext, 
              int icon, 
              String title, 
              String msg, 
              long when, 
              Class<? extends Context> classToLaunch, 
              long processId) { 

      //Define notification msg 
      Intent launchIntent = null; 

      if (classToLaunch != null) { 
       launchIntent = new Intent(appContext, classToLaunch); 
      } else { 
       launchIntent = new Intent(); 
      } 

      // This is dummy data for just differentiate Pending intent 
      // only set value that is check IntentFilter 
      launchIntent.addCategory("CATEGORY" + new Date(System.currentTimeMillis())); 
      launchIntent.addFlags((int) System.currentTimeMillis()); 
      launchIntent.setAction("ACTION" + new Date(System.currentTimeMillis())); 

      // also make launch mode to singleTop in manifest for that activity 
      launchIntent.setFlags(
        Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | 
          Intent.FLAG_ACTIVITY_NEW_TASK); 

      // intent to be launched when click on notification 
      PendingIntent pendingIntent = PendingIntent.getActivity(appContext, 
        0, 
        launchIntent, 
        PendingIntent.FLAG_UPDATE_CURRENT); 

      //Instantiate the notification 
      NotificationCompat.Builder builder = new NotificationCompat.Builder(appContext); //(icon, msg, when); 
      builder.setContentTitle(title); 
      builder.setSmallIcon(icon); 
      builder.setWhen(when); 
      builder.setTicker(msg); 
      builder.setContentText(msg); 
      builder.setContentIntent(pendingIntent); 
      builder.setAutoCancel(true); 
      builder.setDefaults(Notification.DEFAULT_LIGHTS); 
      builder.setDefaults(Notification.DEFAULT_SOUND); 


      NotificationManager notificationManager = (NotificationManager) appContext.getSystemService(Context.NOTIFICATION_SERVICE); 
      notificationManager.notify((int) processId, builder.build()); 
     } 

HomeActivity

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_home); 

     if (getIntent().getExtras() != null) { 
      for (String key : getIntent().getExtras().keySet()) { 
       Object value = getIntent().getExtras().get(key); 
       if (BuildConfig.DEBUG_APPLICATION) { 
        Log.d(TAG, "Key: " + key + " Value: " + value); 
       } 
      } 
     } 
} 

cevap

50

Sen Firebase libraties versiyonunu tutmalı ve Google benzer hizmetler kütüphaneleri oynarlar. Yani 10.2.1 için Firebase libararies sürüm numaralarını güncellemek:

Değişimi:

compile 'com.google.firebase:firebase-core:10.0.1' 
compile 'com.google.firebase:firebase-messaging:10.0.1' 

için:

compile 'com.google.firebase:firebase-core:10.2.1' 
compile 'com.google.firebase:firebase-messaging:10.2.1' 
+0

@ user-44651 Bu cevap sorunuz mu var? –

+0

Bu, com.google.firebase: firebase-messaging: 10.2.0 ve com.google.firebase: firebase-core: 10.2.1 üzerindeki bir libraya sahip olduğumda bir libzendeyken benim için çalıştı. Mesajlaşmaya bağımlılık eklemek: 10.2.1, buradaki sorunumu çözdü. –

+0

Benzer kitaplıklar altındaki tüm kütüphane sürümleri eşleşmelidir, lütfen doğru yanıt olarak kabul ediniz – Manny265

1

Sadece projeyi temizlenmeli ve

11

yout gerekir çalıştı google oyun servisinin her satırı aynı sürümde

compile 'com.google.android.gms:play-services:11.0.1' 
compile 'com.google.android.gms:play-services-maps:11.0.1' 
compile 'com.google.firebase:firebase-core:11.0.1' 
compile 'com.google.firebase:firebase-messaging:11.0.1' 
+0

Bana neden sorma ... Hatta bazı inatçı derleme meraklılarını çözdüm. handleIntent hiç eksikti. Garip çünkü 10 üzerinde tanımlanmalı, 11 üzerinde tanımlanmalı ... derleme uyumluluğunu kırmak için tipik değil ... ve gerçekler konuşuluyor. – Meymann

İlgili konular