Firebase handleIntent AbstractMethodError

10,138

Solution 1

You should keep the Firebase libraties version and Google play services libraries similar. So update the version numbers of the Firebase libararies to 10.2.1:

Change:

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

To:

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

Solution 2

Yout must have every the google play service's line in tha same version

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'

Solution 3

I just cleaned the project and it worked

Share:
10,138

Related videos on Youtube

user-44651
Author by

user-44651

Updated on June 04, 2022

Comments

  • user-44651
    user-44651 almost 2 years

    When I receive a push notification on Android, I get the below error. I can't really seem to find any information about it. Can anyone help? I am really at a loss.

    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()));
    
        }
    

    Utilities

     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);
                    }
                }
            }
    }
    
  • Akhilesh Dhar Dubey
    Akhilesh Dhar Dubey about 7 years
    @user-44651 Is this answer your question?
  • Steven Stip
    Steven Stip about 7 years
    This worked for me when I had one lib depending on com.google.firebase:firebase-messaging:10.2.0 and one on com.google.firebase:firebase-core:10.2.1. Adding the dependency to messaging:10.2.1 resolved my issue here.
  • Manny265
    Manny265 almost 7 years
    all library versions under similar packages should match, please accept this as correct answer