Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Firebase handleIntent AbstractMethodError

Tags:

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);                 }             }         } } 
like image 886
user-44651 Avatar asked Mar 29 '17 15:03

user-44651


2 Answers

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' 
like image 196
Akhilesh Dhar Dubey Avatar answered Sep 28 '22 03:09

Akhilesh Dhar Dubey


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' 
like image 22
Qohat Pretel Polo Avatar answered Sep 28 '22 03:09

Qohat Pretel Polo