带按钮的自定义通知,通知点击导致按钮操作

时间:2018-01-10 10:36:10

标签: java android notifications

我为Android开发了一个警报应用程序ive创建了一个带有两个按钮的自定义通知。由于我现在添加按钮,如果我现在点击通知它似乎触发按钮操作而不是通知意图。 布局中的第二个按钮似乎也触发了第一个按钮,所以基本上任何点击通知或第二个按钮似乎都会在第一个按钮上点击。

自定义通知xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/notiflay"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:background="#000000">

<ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp"/>

<TextView
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/image"
    android:text="Alarm"
    android:textColor="#FFFFFF"
    android:layout_centerVertical="true"
    android:textAppearance="?android:attr/textAppearanceLarge"/>

<LinearLayout
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:orientation="horizontal"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:layout_marginRight="5dp">

    <Button
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="Dismiss"
        android:layout_marginRight="5dp"
        android:background="@drawable/button1"
        android:id="@+id/dismissnot"/>

    <Button
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="Snooze"
        android:background="@drawable/button"
        android:id="@+id/snoozenot"/>

</LinearLayout>

</RelativeLayout>

通知创建代码

Intent alarmIntent = new Intent(this, 
lockscreenactivity.class);
    alarmIntent.putExtra("alarmno", alarmno);
    alarmIntent.putExtra("snooze", false);
    alarmIntent.putExtra("dismiss", false);
    PendingIntent pendingIntent = 
PendingIntent.getActivity(this, alarmno, alarmIntent, 
PendingIntent.FLAG_UPDATE_CURRENT);

    Intent snoozeintnet = new Intent(this, 
lockscreenactivity.class);
    snoozeintnet.putExtra("alarmno", alarmno);
    snoozeintnet.putExtra("snooze", true);
    snoozeintnet.putExtra("dismiss", false);
    PendingIntent pendingsnooze = 
PendingIntent.getActivity(this, alarmno, snoozeintnet, 
PendingIntent.FLAG_UPDATE_CURRENT);

    Intent dismissintent = new Intent(this, lockscreenactivity.class);
    dismissintent.putExtra("alarmno", alarmno);
    dismissintent.putExtra("dismiss", true);
    dismissintent.putExtra("snooze", false);
    PendingIntent pendingdismiss = 
PendingIntent.getActivity(this, alarmno, dismissintent, 
PendingIntent.FLAG_UPDATE_CURRENT);



    int icon = R.drawable.notification;

    NotificationManager mNotificationManager =  (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

    RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification);
    contentView.setImageViewResource(R.id.image, R.drawable.ic_launcher);
    contentView.setTextViewText(R.id.title, "Alarm");
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
        .setSmallIcon(icon)
        .setContent(contentView)
        .setContentTitle("Alarm")
        .setContentIntent(pendingIntent)
        .setAutoCancel(false)
        .setPriority(Notification.PRIORITY_MAX)
        ;


contentView.setOnClickPendingIntent(R.id.dismissnot, 
                                        pendingdismiss);

  contentView.setOnClickPendingIntent(R.id.snoozenot, 
                                        pendingsnooze);
    contentView.setOnClickPendingIntent(R.id.notiflay, 
                                        pendingIntent);
    mNotificationManager.notify(alarmno, notificationBuilder.build());

0 个答案:

没有答案