Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Evento OnClick para un botón en una notificación personalizada

Tengo una notificación personalizada con un botón. Para configurar la notificación y utilizar el evento OnClick en mi botón He utilizado este código:

//Notification and intent of the notification Notification notification = new Notification(R.drawable.stat_notify_missed_call, "Custom Notification", System.currentTimeMillis()); Intent mainIntent = new Intent(getBaseContext(), NotificationActivity.class); PendingIntent pendingMainIntent = PendingIntent.getActivity(getBaseContext(), 0, mainIntent , 0); notification.contentIntent = pendingMainIntent; //Remoteview and intent for my button RemoteViews notificationView = new RemoteViews(getBaseContext().getPackageName(), R.layout.remote_view_layout); Intent activityIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:190")); PendingIntent pendingLaunchIntent = PendingIntent.getActivity(getBaseContext(), 0, activityIntent, PendingIntent.FLAG_UPDATE_CURRENT); notificationView.setOnClickPendingIntent(R.id.button1, pendingLaunchIntent); notification.contentView = notificationView; notificationManager.notify(CUSTOM_NOTIFICATION_ID, notification); 

Con este código tengo una notificación personalizada con mi diseño personalizado … pero no puedo hacer clic en el botón! Cada vez que intento hacer clic en el botón, hago clic en la notificación completa y, por lo tanto, el script inicia el "mainIntent" en lugar de "activityIntent".

  • Android textview relleno entre líneas
  • Firebase Android: Se ha producido un error interno.
  • Android: Manejo eficiente de la rotación de la pantalla
  • Emulador no se muestra en dispositivos adb
  • Cómo generar un código de hash exclusivo para la entrada de cadena en android ...?
  • Android google maps marker desactivar la opción de navegación
  • He leído en Internet que este código no funciona en todos los terminales. Lo he probado en el emulador y en un HTC Magic pero siempre tengo el mismo problema: ¡No puedo hacer clic en el botón!

    Mi código es correcto? ¿Puede ayudarme alguien?

    Gracias,

    Simone

  • Archivos espurios en el directorio de datos de mi aplicación
  • Botón de actualización de Google Play Store deshabilitado después de realizar cambios
  • Lengüetas de material con estilo de Android 5.0
  • Mostrar autocompletar inmediatamente en Android
  • ¿Cómo rotar la línea en Android XML?
  • ¿Qué solución basada en plataformas móviles basada en Ruby utilizar?
  • 4 Solutions collect form web for “Evento OnClick para un botón en una notificación personalizada”

    Estoy escribiendo código en mi clase MyActivity.java que extiende android.app.Activity

    Crea una notificación personalizada, cuando el usuario hace clic en el botón que envía una broadcast . Hay un receptor de radiodifusión que recibe la broadcast .

     private void createDownloadNotification() { Intent closeButton = new Intent("Download_Cancelled"); closeButton.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); PendingIntent pendingSwitchIntent = PendingIntent.getBroadcast(this, 0, closeButton, 0); RemoteViews notificationView = new RemoteViews(getPackageName(), R.layout.widget_update_notification); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); NotificationCompat.Builder builder = new NotificationCompat.Builder(this).setSmallIcon(R.drawable.ic_launcher).setTicker("Ticker Text").setContent(notificationView); notificationView.setProgressBar(R.id.pb_progress, 100, 12, false); notificationView.setOnClickPendingIntent(R.id.btn_close, pendingSwitchIntent); notificationManager.notify(1, builder.build()); } public static class DownloadCancelReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { System.out.println("Received Cancelled Event"); } } 

    Registrar el receptor en AndroidManifest.xml

     <receiver android:name=".MainActivity$DownloadCancelReceiver" android:exported="false"> <intent-filter> <action android:name="Download_Cancelled" /> </intent-filter> </receiver> 

    Puesto que es clase interna así que tiene que utilizar $ signo

    Widget xml está aquí

     <?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:orientation="horizontal" > <Button android:id="@+id/btn_close" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Close Me" /> <ProgressBar android:id="@+id/pb_progress" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> 

    mira esto

    1. Cree un archivo de diseño xml para su notificación.

    2. Cree la notificación utilizando el Notification.Builder. Después de agregar todo lo que desea (iconos, sonidos, etc), haga lo siguiente:

       //R.layout.notification_layout is from step 1 RemoteViews contentView=new RemoteViews(ctx.getPackageName(), R.layout.notification_layout); setListeners(contentView);//look at step 3 notification.contentView = contentView; 
    3. Cree un método setListeners. Dentro de este método usted tiene que escribir esto:

       //HelperActivity will be shown at step 4 Intent radio=new Intent(ctx, packagename.youractivity.class); radio.putExtra("AN_ACTION", "do");//if necessary PendingIntent pRadio = PendingIntent.getActivity(ctx, 0, radio, 0); //R.id.radio is a button from the layout which is created at step 2 view.setOnClickPendingIntent(R.id.radio, pRadio); //Follows exactly my code! Intent volume=new Intent(ctx, tsapalos11598712.bill3050.shortcuts.helper.HelperActivity.class); volume.putExtra("DO", "volume"); //HERE is the whole trick. Look at pVolume. I used 1 instead of 0. PendingIntent pVolume = PendingIntent.getActivity(ctx, 1, volume, 0); view.setOnClickPendingIntent(R.id.volume, pVolume); 
    4. Para mis requisitos he utilizado una HelperActivity que responde a las intenciones. Pero para ti no creo que sea necesario.

    Si quieres el código fuente completo, puedes buscarlo o descargarlo desde mi repo de git. El código es para uso personal, así que no espere leer un código magnífico con muchos comentarios. https://github.com/BILLyTheLiTTle/AndroidProject_Shortcuts

    TODO LO ANTERIOR, RESPONDE A LA CUESTIÓN DEL EVENTO DE CAPTURA DE BOTONES DIFERENTES.

    Acerca de cancelar la notificación te redirijo aquí ( Cómo borrar una notificación en Android ). Sólo recuerde utilizar el ID que analizó en el método de notificación cuando llamó a la notificación por primera vez

    Parece que setOnClickPendingIntent no funciona cuando se utiliza dentro de las colecciones.

    Así que intente setPendingIntentTemplate en lugar de setOnClickPendingIntent . Para más información abajo android developer link …

    Haga clic aquí para obtener más detalles – Ir al sitio para desarrolladores de Android.

    Parece que setOnClickPendingIntent no funciona cuando se utiliza dentro de las colecciones:

    http://developer.android.com/reference/android/widget/RemoteViews.html#setOnClickPendingIntent(int,%20android.app.PendingIntent)

    Intente usar setPendingIntentTemplate en su lugar.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.