Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The constructor notification is deprecated

Tags:

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

like image 669
Indra Avatar asked Oct 20 '13 05:10

Indra


People also ask

What is NotificationCompat builder?

public class NotificationCompat.Builder. Builder class for NotificationCompat objects. Allows easier control over all the flags, as well as help constructing the typical notification layouts. On platform versions that don't offer expanded notifications, methods that depend on expanded notifications have no effect.

Which API do you use to show a notification in the notification drawer and in the device's status bar?

Android 8.0, API level 26 Apps with active notifications display a notification "badge" on top of their app icon on the home/launcher screen. Users can now snooze a notification from the drawer.


2 Answers

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)      .setContentIntent(yourPendingIntent)      .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(); 
like image 104
Antman06 Avatar answered Oct 23 '22 06:10

Antman06


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);         }  } 
like image 30
Fabrizio Bartolomucci Avatar answered Oct 23 '22 04:10

Fabrizio Bartolomucci