Java tutorial
/** * Copyright 2016 Google Inc. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.photobox.android.iris; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.media.RingtoneManager; import android.net.Uri; import android.os.Binder; import android.os.IBinder; import android.support.v4.app.NotificationCompat; import android.util.Log; import com.google.firebase.messaging.FirebaseMessagingService; import com.google.firebase.messaging.RemoteMessage; import java.util.Map; public class MyFirebaseMessagingService extends FirebaseMessagingService { private static final String TAG = "MyFirebaseMsgService"; @Override public void onMessageReceived(RemoteMessage remoteMessage) { // TODO(developer): Handle FCM messages here. // If the application is in the foreground handle both data and notification messages here. // Also if you intend on generating your own notifications as a result of a received FCM // message, here is where that should be initiated. See sendNotification method below. Log.d(TAG, "From: " + remoteMessage.getNotification().getTitle()); Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody()); sendNotification(remoteMessage.getNotification(), remoteMessage.getData()); } private void sendNotification(RemoteMessage.Notification messageNotification, Map messageData) { Log.d(TAG, "Entering Send notification"); Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + (String) messageData.get("phoneNumber"))); callIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, callIntent, PendingIntent.FLAG_ONE_SHOT); String messageType = (String) messageData.get("type"); Log.d(TAG, "messageType: " + messageType); Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); NotificationCompat.Builder notificationBuilder = null; if ("call".equals(messageType)) { Log.d(TAG, "inside call: "); notificationBuilder = new NotificationCompat.Builder(this) .setSmallIcon(android.R.drawable.stat_notify_missed_call) .setContentTitle(messageNotification.getTitle()).setContentText(messageNotification.getBody()) .setAutoCancel(true).setSound(defaultSoundUri).setContentIntent(pendingIntent) .addAction(0, "Call", pendingIntent); } else { Log.d(TAG, "inside sms: "); notificationBuilder = new NotificationCompat.Builder(this) .setSmallIcon(android.R.drawable.sym_action_email) .setContentTitle(messageNotification.getTitle()).setContentText(messageNotification.getBody()) .setAutoCancel(true).setSound(defaultSoundUri).setContentIntent(pendingIntent); } NotificationManager notificationManager = (NotificationManager) getSystemService( Context.NOTIFICATION_SERVICE); notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); } private void makeCall(String number) { final Intent dial = new Intent(Intent.ACTION_CALL); dial.setData(Uri.parse("tel:" + Uri.encode(number))); //this.getApplicationContext().startActivity(dial); } }