Ниже приведены зависимости в Gradle сборки приложения
implementation 'com.google.firebase:firebase-messaging:20.0.1'
implementation "android.arch.work:work-runtime:1.0.1"
Ниже приведен класс FirebaseMessagingService
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onNewToken(@NonNull String s) {
super.onNewToken(s);
Log.v("## onNewToken", "## onNewToken : "+s);
//Toast.makeText(getApplicationContext(), "onNewToken : "+s, Toast.LENGTH_LONG).show();
}
@Override
public void onMessageReceived(final RemoteMessage remoteMessage) {
Log.v("## onMessageRecived CLD", "## onMessageReceived Called");
Log.v("## onMessageRecivedData", "## onMessageReceived Data: "+remoteMessage.getData());
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "onMessagedReceived Called", Toast.LENGTH_LONG).show();
}
});
PeriodicWorkRequest periodicWorkRequest = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
periodicWorkRequest = new PeriodicWorkRequest.Builder(MyWorker.class, 15, TimeUnit.MINUTES)
.setConstraints(new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build())
.build();
}
WorkManager.getInstance().enqueueUniquePeriodicWork("SyncWorker", ExistingPeriodicWorkPolicy.KEEP, periodicWorkRequest);
}
}
Ниже приведено исключение, которое возникает, когда onMessageReceivedCalled () в Android 6.0 (Marshmallow):
06-17 12:52:14.365 20954-21213/com.example.mytestapplication E/AndroidRuntime: FATAL EXCEPTION: Firebase-MyFirebaseMessagingService
Process: com.example.mytestapplication, PID: 20954
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String androidx.work.WorkRequest.getStringId()' on a null object reference
at androidx.work.impl.WorkContinuationImpl.<init>(WorkContinuationImpl.java:146)
at androidx.work.impl.WorkContinuationImpl.<init>(WorkContinuationImpl.java:125)
at androidx.work.impl.WorkManagerImpl.createWorkContinuationForUniquePeriodicWork(WorkManagerImpl.java:365)
at androidx.work.impl.WorkManagerImpl.enqueueUniquePeriodicWork(WorkManagerImpl.java:344)
at com.example.mytestapplication.MyFirebaseMessagingService.onMessageReceived(MyFirebaseMessagingService.java:56)
at com.google.firebase.messaging.FirebaseMessagingService.zzc(com.google.firebase:firebase-messaging@@20.0.1:69)
at com.google.firebase.messaging.zze.run(com.google.firebase:firebase-messaging@@20.0.1:2)
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)
06-17 12:52:17.850 20954-20975/com.example.mytestapplication E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb9f6c260
Я получаю исключение выше, когда onMessageReceived () вызывается в Android 6.0. Пожалуйста, помогите мне в этом. Заранее спасибо