working oreo notificationcompat notification not example create android android-asynctask android-notifications

oreo - Notificación de Android no funciona



notification oreo (5)

Prueba esto:

NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); int icon = R.drawable.icon; // icon from resources CharSequence tickerText = "Any thing"; // ticker-text long when = System.currentTimeMillis(); // notification time Context context21 = getApplicationContext(); // application Context CharSequence contentTitle = "Anything"; // expanded message title CharSequence contentText = (CharSequence) extras.get("message"); // expanded message text Intent notificationIntent = new Intent(this, MainStart.class); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); // the next two lines initialize the Notification, using the configurations above Notification notification = new Notification(icon, tickerText, when); notification.defaults |= Notification.DEFAULT_VIBRATE; notification.defaults |= Notification.DEFAULT_LIGHTS; notification.defaults |= Notification.DEFAULT_SOUND; notification.flags |= Notification.FLAG_AUTO_CANCEL; /* long[] vibrate = { 0, 100, 200, 300 }; notification.vibrate = vibrate; notification.ledARGB = Color.RED; notification.ledOffMS = 300; notification.ledOnMS = 300;*/ notification.setLatestEventInfo(context21, contentTitle, contentText, contentIntent); mNotificationManager.notify(Constants.NOTIFICATION_ID, notification);

He intentado obtener una notificación de una carga exitosa desde un ASyncTask para que funcione todo el día. No recibo ningún error de mi código actual, pero no puedo mostrar la notificación en la barra de notificaciones (ni en ningún otro lugar). No recibo mensajes en LogCat y no aparece ninguna notificación en la barra de notificaciones. Este es mi código:

Notification mNotification = new Notification(icon, tickerText, when); CharSequence contentTitle = "upload completed."; CharSequence contentText = "upload completed."; Intent notificationIntent = new Intent(context, CastrActivity.class); PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_NO_CREATE); mNotification.contentIntent = contentIntent; mNotification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); mNotificationManager.notify(NOTIFICATION_ID, mNotification);

Esto se llama desde el método onPostExecute () de una ASyncTask. Estoy un poco confundido en la parte PendingIntent, para ser honesto. Cualquier aclaración de lo que sospecho que es un código incorrecto sería muy apreciada.


Otra cosa que debes probar es asegurarte de que tu manifiesto contenga

<permission android:name="android.permission.STATUS_BAR_SERVICE" android:protectionLevel="signature" />

También el mío parecía ignorar las notificaciones sucesivas con el mismo NOTIFICATION_ID.


Aunque su problema esté resuelto, solo publicaré cómo resolví mi problema que la notificación no se mostraba, quizás podría ayudar a otras personas que leen las respuestas:

En mi notificación, me faltaba el ícono. Tan pronto como agregué algo como setSmallIcon(R.drawable.ic_launcher) se mostró la notificación.


Creé la clase para mostrar notificaciones:

public class NotificationData { public static NotificationManager mNotificationManager; public static int SIMPLE_NOTFICATION_ID; private Context _context; public NotificationData(Context context) { _context = context; } public void clearNotification() { mNotificationManager.cancel(SIMPLE_NOTFICATION_ID); } public void SetNotification(int drawable, String msg, String action_string, Class cls) { mNotificationManager = (NotificationManager) _context.getSystemService(Context.NOTIFICATION_SERVICE); final Notification notifyDetails = new Notification(drawable, "Post Timer", System.currentTimeMillis()); long[] vibrate = { 100, 100, 200, 300 }; notifyDetails.vibrate = vibrate; notifyDetails.ledARGB = 0xff00ff00; notifyDetails.ledOnMS = 300; notifyDetails.ledOffMS = 1000; // notifyDetails.number=4; notifyDetails.defaults =Notification.DEFAULT_ALL; Context context = _context; CharSequence contentTitle = msg; CharSequence contentText = action_string; Intent notifyIntent = new Intent(context, cls); // Bundle bundle = new Bundle(); // bundle.putBoolean(AppConfig.IS_NOTIFICATION, true); notifyIntent.putExtras(bundle); PendingIntent intent = PendingIntent.getActivity(_context, 0,notifyIntent, android.content.Intent.FLAG_ACTIVITY_NEW_TASK); notifyDetails.setLatestEventInfo(context, contentTitle, contentText, intent); mNotificationManager.notify(SIMPLE_NOTFICATION_ID, notifyDetails); } }

Cómo usar esta clase:

NotificationData notification; //create object notification = new NotificationData(this); notification.SetNotification(R.drawable.notification, "Notification Title", "Click to open", YourClassName.class);

Agregar permiso android.permission.VIBRATE


Para mí, esto seguía sucediendo y no tenía idea de por qué, pero el problema era que el ícono que establecí era demasiado grande, por lo que me estaba dando un error aleatorio.