The constructor notification is deprecated

I am very new to android app development. With the help of so many tutorials, i created an app with webview, actionbar and GCM. Everything works fine. But i am getting a warning “The constructor notification is deprecated”. I have gone through notification.builder. but i am not able to modify my codes with new notification buider. Can someone help me…..

public class GCMIntentService extends GCMBaseIntentService {

private static final String TAG = "GCMIntentService";

public GCMIntentService() {
    super(SENDER_ID);
}

/**
 * Method called on device registered
 **/
@Override
protected void onRegistered(Context context, String registrationId) {
    Log.i(TAG, "Device registered: regId = " + registrationId);
    displayMessage(context, "Your device registred with GCM");
    Log.d("NAME"," "+ MainActivity.name);
    ServerUtilities.register(context, MainActivity.name, MainActivity.email, MainActivity.AndroidVersion, MainActivity.AndroidID, MainActivity.manufacturer, MainActivity.model, registrationId);
}

/**
 * Method called on device un registred
 * */
@Override
protected void onUnregistered(Context context, String registrationId) {
    Log.i(TAG, "Device unregistered");
    displayMessage(context, getString(R.string.gcm_unregistered));
    ServerUtilities.unregister(context, registrationId);
}

/**
 * Method called on Receiving a new message
 * */
@Override
protected void onMessage(Context context, Intent intent) {
    Log.i(TAG, "Received message");
    String message = intent.getExtras().getString("price");

    displayMessage(context, message);
    // notifies user
    generateNotification(context, message);
}

/**
 * Method called on receiving a deleted message
 * */
@Override
protected void onDeletedMessages(Context context, int total) {
    Log.i(TAG, "Received deleted messages notification");
    String message = getString(R.string.gcm_deleted, total);
    displayMessage(context, message);
    // notifies user
    generateNotification(context, message);
}

/**
 * Method called on Error
 * */
@Override
public void onError(Context context, String errorId) {
    Log.i(TAG, "Received error: " + errorId);
    displayMessage(context, getString(R.string.gcm_error, errorId));
}

@Override
protected boolean onRecoverableError(Context context, String errorId) {
    // log message
    Log.i(TAG, "Received recoverable error: " + errorId);
    displayMessage(context, getString(R.string.gcm_recoverable_error,
            errorId));
    return super.onRecoverableError(context, errorId);
}

/**
 * Issues a notification to inform the user that server has sent a message.
 */
private static void generateNotification(Context context, String message) {
    int icon = R.drawable.ic_launcher;
    long when = System.currentTimeMillis();
    NotificationManager notificationManager = (NotificationManager)
            context.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(icon, message, when);

    String title = context.getString(R.string.app_name);

    Intent notificationIntent = new Intent(context, MainActivity.class);
    // set intent so it does not start a new activity
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
            Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent intent =
            PendingIntent.getActivity(context, 0, notificationIntent, 0);
    notification.setLatestEventInfo(context, title, message, intent);
    notification.flags |= Notification.FLAG_AUTO_CANCEL;

    // Play default notification sound
    notification.defaults |= Notification.DEFAULT_SOUND;

    //notification.sound = Uri.parse("android.resource://" + context.getPackageName() + "your_sound_file_name.mp3");

    // Vibrate if vibrate is enabled
    notification.defaults |= Notification.DEFAULT_VIBRATE;
    notificationManager.notify(0, notification);      

}

}

**Manifest sdkversion 8 to 18

  • Bluetooth Automatic Connection with Paired Devices
  • What's the height of the Android Toolbar?
  • Android Set ImageView image src in Style
  • Can you use a LoaderManager from a Service?
  • onCreateView() in Fragment is not called immediately, even after FragmentManager.executePendingTransactions()
  • How to run unit test on a android module?
  • Related posts:

    Android get current Locale, not default
    How to add submenu items to ActionBar action in code?
    How to add android bookmark on homescreen from web page?
    Creating project in Android 5.0 Lollipop using Eclipse Juno
    isItemChecked always returns the opposite of what it is supposed to when inside an onItemClickListen...
    Android - FAB to hide when navigating between different fragments in a viewpager
  • Custom Spinner with rounded corners, stroked edge and a selector icon
  • Can I do Android Programming in C++, C?
  • Android- Error:Execution failed for task ':app:transformClassesWithDexForRelease'
  • Android Compass Bearing
  • n level Expandable Listview
  • Set a background color to a selected ListView Item in android
  • 3 Solutions collect form web for “The constructor notification is deprecated”

    You’re attempting to use the constructor for Notification which is deprecated as of API 11. Meaning it isn’t supported any longer and should not be used. use Notification.Builder instead https://developer.android.com/reference/android/app/Notification.Builder.html

     Notification noti = new Notification.Builder(mContext)
         .setContentTitle("New mail from " + sender.toString())
         .setContentText(subject)
         .setSmallIcon(R.drawable.new_mail)
         .setLargeIcon(aBitmap)
         .build();
    

    You currently have the following :

    Notification notification = new Notification(icon, message, when);
    

    This constructor is deprecated in favor of the Notification.Builder which would look like the following :

    Notification notification = new Notification.Builder(context)
        .setContentText(message)
        .setSmallIcon(icon)
        .setWhen(when)
        .build();
    

    As for the original question, this class works fine, if your system supports GCMBaseIntentService:

    package ...;
    
    import android.app.Notification;
    import android.app.NotificationManager;
    import android.app.PendingIntent;
    import android.content.Context;
    import android.content.Intent;
    import android.util.Log;
    
    import com.google.android.gcm.GCMBaseIntentService;
    
    import static com.example.taxiprofessional.CommonUtilities.SENDER_ID;
    import static com.example.taxiprofessional.CommonUtilities.displayMessage;
    
    public class GCMIntentService extends GCMBaseIntentService {
    
        private static final String TAG = "GCMIntentService";
    
     public GCMIntentService() {
         super(SENDER_ID);
     }
    
     /**
      * Method called on device registered
      **/
     @Override
     protected void onRegistered(Context context, String registrationId) {
         Log.i(TAG, "Device registered: regId = " + registrationId);
         displayMessage(context, "Your device registred with GCM");
         AccountInformation info=AccountInformation.sharedInstance();
         ServerUtilities.register(context, info.email, info.password, registrationId);
     }
    
     /**
      * Method called on device un registred
      * */
     @Override
     protected void onUnregistered(Context context, String registrationId) {
         Log.i(TAG, "Device unregistered");
         displayMessage(context, getString(R.string.gcm_unregistered));
         ServerUtilities.unregister(context, registrationId);
     }
    
     /**
      * Method called on Receiving a new message
      * */
     @Override
     protected void onMessage(Context context, Intent intent) {
         Log.i(TAG, "Received message");
         String message = intent.getExtras().getString("price");
    
         displayMessage(context, message);
         // notifies user
         generateNotification(context, message);
     }
    
     /**
      * Method called on receiving a deleted message
      * */
     @Override
     protected void onDeletedMessages(Context context, int total) {
         Log.i(TAG, "Received deleted messages notification");
         String message = getString(R.string.gcm_deleted, total);
         displayMessage(context, message);
         // notifies user
         generateNotification(context, message);
     }
    
     /**
      * Method called on Error
      * */
     @Override
     public void onError(Context context, String errorId) {
         Log.i(TAG, "Received error: " + errorId);
         displayMessage(context, getString(R.string.gcm_error, errorId));
     }
    
     @Override
     protected boolean onRecoverableError(Context context, String errorId) {
         // log message
         Log.i(TAG, "Received recoverable error: " + errorId);
         displayMessage(context, getString(R.string.gcm_recoverable_error,
                 errorId));
         return super.onRecoverableError(context, errorId);
     }
    
     /**
      * Issues a notification to inform the user that server has sent a message.
      */
     private static void generateNotification(Context context, String message) {
         int icon = R.drawable.taxi_profi;
         long when = System.currentTimeMillis();
         NotificationManager notificationManager = (NotificationManager)
                 context.getSystemService(Context.NOTIFICATION_SERVICE);
         Notification notification = new Notification(icon, message, when);
    
         String title = context.getString(R.string.app_name);
    
         Intent notificationIntent = new Intent(context, Dashboard.class);
         // set intent so it does not start a new activity
         notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
                 Intent.FLAG_ACTIVITY_SINGLE_TOP);
         PendingIntent intent =
                 PendingIntent.getActivity(context, 0, notificationIntent, 0);
         notification.setLatestEventInfo(context, title, message, intent);
         notification.flags |= Notification.FLAG_AUTO_CANCEL;
    
         // Play default notification sound
         notification.defaults |= Notification.DEFAULT_SOUND;
    
         // Vibrate if vibrate is enabled
         notification.defaults |= Notification.DEFAULT_VIBRATE;
         notificationManager.notify(0, notification);      
    
     }
    
    }
    

    I tried following tutorial at:
    http://javapapers.com/android/google-cloud-messaging-gcm-for-android-and-push-notifications/
    and in fact I seem able to register and the sending of notifications gives no errors as you may see at:
    http://push.taxiprofessional.net/android/testNotification.php

    Yet no notification arrives. Has anyone used that and may help to debunk it?

    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.