Android Open Source - SurveySDK_android Gcm Notification Receiver






From Project

Back to project page SurveySDK_android.

License

The source code is released under:

Apache License

If you think the Android project SurveySDK_android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2013 The Android Open Source Project
 *//ww  w. j a v a 2 s .c  om
 * 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.survey.android.c2dm;

import android.app.IntentService;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;

import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.util.Log;

import com.google.android.gms.gcm.GoogleCloudMessaging;
import com.survey.android.R;
import com.survey.android.session.Configuration;

/**
 * This {@code IntentService} does the actual handling of the GCM message.
 * {@code GcmBroadcastReceiver} (a {@code WakefulBroadcastReceiver}) holds a
 * partial wake lock for this service while the service does its work. When the
 * service is finished, it calls {@code completeWakefulIntent()} to release the
 * wake lock.
 */
public class GcmNotificationReceiver extends IntentService {
    public static final String TAG = "GcmNotificationReceiver";
  public static final int NOTIFICATION_ID = 1;
  
    NotificationCompat.Builder builder;

    public GcmNotificationReceiver() {
        super("GcmNotificationReceiver");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
      if (Configuration.isGCMNotificationsEnabled()) {      
          Bundle extras = intent.getExtras();
          GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
          // The getMessageType() intent parameter must be the intent you received
          // in your BroadcastReceiver.
          String messageType = gcm.getMessageType(intent);
  
          if (!extras.isEmpty()) {  // has effect of unparcelling Bundle
              /*
               * Filter messages based on message type. Since it is likely that GCM will be
               * extended in the future with new message types, just ignore any message types you're
               * not interested in, or that you don't recognize.
               */
              if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) {
                  Log.e(TAG, "Send error: " + extras.toString());
              } else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) {
                  Log.d(TAG, "Deleted messages on server: " + extras.toString());
              // If it's a regular GCM message, post notification.
              } else if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) {
                  Log.d(TAG, "Received: " + extras.toString());
                sendNotification(intent);
              }
          }
      }
        // Release the wake lock provided by the WakefulBroadcastReceiver.
        GcmBroadcastReceiver.completeWakefulIntent(intent);
    }

    // Put the message into a notification and post it.
    @SuppressWarnings("deprecation")
  private void sendNotification(Intent intent) {
      
        Log.d(TAG, "In sendNotification()"); 
      if (Configuration.isGCMEnabled() && Configuration.isGCMNotificationsEnabled()) {
            Log.i(TAG, "posting Notification to status bar"); 
            
        final String testResult = intent.getStringExtra("message");
        final String surveyId = intent.getStringExtra("survey_id");

        try {
          NotificationManager mNotificationManager = (NotificationManager) getBaseContext()
              .getSystemService(Context.NOTIFICATION_SERVICE);

          CharSequence tickerText = "Survey notification";
          long when = System.currentTimeMillis();
          NotificationCompat.Builder mNotificationBuilder = new NotificationCompat.Builder(this);
          mNotificationBuilder.setSmallIcon(R.drawable.c2dm_icon);
          mNotificationBuilder.setTicker(tickerText);
          mNotificationBuilder.setWhen(when);
          
          CharSequence contentTitle = "Survey notification";  
          int NOTIFICATION_ID = 1;
          Intent notificationIntent = new Intent(this,
              com.survey.android.view.Notification.class);
          notificationIntent.putExtra("notification_id", NOTIFICATION_ID);
          notificationIntent.putExtra("survey_id", surveyId);
          PendingIntent contentIntent = PendingIntent.getActivity(
              this, 0, notificationIntent,
              PendingIntent.FLAG_ONE_SHOT
                  + PendingIntent.FLAG_UPDATE_CURRENT);

          mNotificationBuilder.setContentTitle(contentTitle);
          mNotificationBuilder.setContentText(testResult);
          mNotificationBuilder.setContentIntent(contentIntent);

          mNotificationManager.notify(NOTIFICATION_ID, mNotificationBuilder.build());
        } catch (Exception e) {
          e.printStackTrace();
        }  
      } else {
            Log.i(TAG, "GCM Notification Not Enabled");         
      }
    }
}




Java Source Code List

android.UnusedStub.java
com.google.android.gms.BuildConfig.java
com.google.android.gms.BuildConfig.java
com.survey.android.UnusedStub.java
com.survey.android.c2dm.C2DMRegistrationReceiver.java
com.survey.android.c2dm.C2DMTokenRefresher.java
com.survey.android.c2dm.GcmBroadcastReceiver.java
com.survey.android.c2dm.GcmNotificationReceiver.java
com.survey.android.c2dm.GcmRegistrationService.java
com.survey.android.c2dm.RegService.java
com.survey.android.common.PlacesAutoCompleteAdapter.java
com.survey.android.common.Themes.java
com.survey.android.containers.AppContainer.java
com.survey.android.containers.PollContainer.java
com.survey.android.custom_widgets.FontTextView.java
com.survey.android.custom_widgets.PollRatingsScaleLabeled.java
com.survey.android.custom_widgets.PollRatings.java
com.survey.android.custom_widgets.PollSelectionTable.java
com.survey.android.db.SerializationHelper.java
com.survey.android.db.SerializationManager.java
com.survey.android.fragment.AudioRecorderFragment.java
com.survey.android.geofence.GeofenceRemover.java
com.survey.android.geofence.GeofenceRequester.java
com.survey.android.geofence.GeofenceUtils.java
com.survey.android.geofence.LocationServiceErrorMessages.java
com.survey.android.geofence.ReceiveTransitionsIntentService.java
com.survey.android.geofence.SimpleGeofenceStore.java
com.survey.android.geofence.SimpleGeofence.java
com.survey.android.model.AnswerModel.java
com.survey.android.model.CategoryModel.java
com.survey.android.model.CurrentSectionModel.java
com.survey.android.model.Prefs.java
com.survey.android.model.QuestionModel.java
com.survey.android.model.ResponseModel.java
com.survey.android.model.SurveyModel.java
com.survey.android.model.UserModel.java
com.survey.android.services.BackgroundUploader.java
com.survey.android.services.DataBroadcastReceiver.java
com.survey.android.services.DeviceStartUpReceiver.java
com.survey.android.services.GeoSurveyPollService.java
com.survey.android.services.LocationTesterService.java
com.survey.android.services.ReferrerCatcher.java
com.survey.android.session.Configuration.java
com.survey.android.session.Session.java
com.survey.android.util.Base64.java
com.survey.android.util.ConstantData.java
com.survey.android.util.GeoPush.java
com.survey.android.util.GeoTriggerBroadcastReceiver.java
com.survey.android.util.GeoTrigger.java
com.survey.android.util.LocationLog.java
com.survey.android.util.Log.java
com.survey.android.util.StrToIntMap.java
com.survey.android.util.StrToStrMap.java
com.survey.android.util.Toiler.java
com.survey.android.util.WhiteLabel.java
com.survey.android.view.Dashboard.java
com.survey.android.view.Gallery.java
com.survey.android.view.LocalizedFragmentActivity.java
com.survey.android.view.Main.java
com.survey.android.view.Notification.java
com.survey.android.view.Question.java
com.survey.android.view.Survey.java
com.survey.android.view.ThemeCustomizer.java
com.survey.android.view.themed.DashboardThemed.java
com.survey.android.view.themed.MainThemed.java
com.survey.android.view.themed.NotificationThemed.java
com.survey.android.view.themed.QuestionThemed.java
com.survey.android.view.themed.SurveyThemed.java
com.survey.android.webclient.HttpRequest.java
com.survey.android.webclient.HttpsClient.java
com.survey.android.webclient.RestClient.java
com.survey.android.webclient.SurveyHttpClient.java
com.survey.android.webclient.SurveyRequest.java
com.survey.android.webclient.SurveySSLSocketFactory.java
com.survey.android.webclient.SurveyX509TrustManager.java
com.survey.android.widget.Widget.java
com.survey.androiddemo.AppContainer.java
com.survey.androiddemo.LoginActivity.java
com.survey.androiddemo.MainActivity.java
com.survey.androiddemo.SDKConfigSettings.java