如何在Android中向推送通知添加按钮

11

我想让我的推送通知有两个按钮,但是我找不到任何关于如何实现的方法。请问有人能解释一下如何在Android中添加按钮到推送通知中吗?

NotificationCompat.Builder notification;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_verify);
    notification=new NotificationCompat.Builder(this);
    notification.setAutoCancel(true);
    /* blah blah blah  */
}

public void onVerify(View v)
{
    /*
     some code
    */
    if(example){ /* another piece of code */ }
    else{
        String num=data.getString("Phone");
        this.defineNotification(num);
        //Log.i(TAG,"here ");
        Intent i=new Intent(this,VendorDetails.class);
        i.putExtra("Phone",num);
        startActivity(i);
    }
}
public void defineNotification(String num)
{
    notification.setContentTitle("Successful");
    notification.setContentText("Hi, I am being displayed now");
    notification.setWhen(System.currentTimeMillis());
    notification.setSmallIcon(R.mipmap.ic_launcher);
    Intent i=new Intent(this,OrderTypes.class);
    PendingIntent pi=PendingIntent.getActivity(this, 0, i, 0);
    notification.addAction(R.mipmap.ic_launcher,"Accept",pi);
    notification.addAction(R.mipmap.ic_launcher, "Decline", pi);
    NotificationCompat.MediaStyle mediaStyle=new NotificationCompat.MediaStyle();
    MediaSessionCompat mediaSession=new MediaSessionCompat(this,TAG);
    mediaStyle.setShowActionsInCompactView(1);
    mediaStyle.setMediaSession(mediaSession.getSessionToken());
    notification.setStyle(mediaStyle);


    Intent intent=new Intent(this,VendorDetails.class);
    intent.putExtra("Phone",num);
    PendingIntent pendingIntent=PendingIntent.getActivity(Verify.this,0,intent,0);
    notification.setContentIntent(pendingIntent);

    NotificationManager nm=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    nm.notify(uniqueID,notification.build());
    //Log.i(TAG, "coming here in notification");
}

我正在使用MediaSessionCompat而不是MediaSession类,请检查是否有错误。


1
Android 接收推送通知,但不会发送。此外,如果您不知道如何在 Android 中创建按钮和使用按钮,基本上需要从入门教程开始。学习 Android 编程没有捷径。您需要先学习基础知识。请访问 http://developer.android.com/training/index.html。 - Stephan Branczyk
首先,您需要正确理解问题,然后标记为不清楚或无用。 - Sachin Parashar
我的问题是“如何将按钮添加到推送通知”,而不是添加到活动中。 - Sachin Parashar
http://developer.android.com/intl/pt-br/training/notify-user/build-notification.html - Deividi Cavarzan
1
我非常清楚如何在活动中添加按钮。但是我们现在谈论的是推送通知。 - Sachin Parashar
显示剩余3条评论
1个回答

38

你是希望得到这样的效果吗?

在此输入图片描述

想要通知,只需使用.addAction(R.drawable.MYDRAWABLE, "BUTTON", INTENT)方法。

Notification notification = new Notification.Builder(context)
    // Show controls on lock screen even when user hides sensitive content.
    .setVisibility(Notification.VISIBILITY_PUBLIC)
    .setSmallIcon(R.drawable.NotIcon)
//HERE ARE YOUR BUTTONS
    .addAction(R.drawable.ic_prev, "BUTTON 1", myIntentToButtonOneScreen) // #0
    .addAction(R.drawable.ic_pause, "BUTTON 2", myIntentToButtonTwoScreen)  // #1
    .addAction(R.drawable.ic_next, "BUTTON 3", myIntentToButtonThreeScreen)     // #2
    // Apply the media style template
    .setStyle(new Notification.MediaStyle()
    .setShowActionsInCompactView(1)
    .setMediaSession(mMediaSession.getSessionToken())
    .setContentTitle("Example for you")
    .setContentText("Example for you")
    .setLargeIcon(ButtonExampleIcon)
    .build();

看这个:

http://developer.android.com/guide/topics/ui/notifiers/notifications.html

记住,为了自定义通知,请使用.build方法。这就是我们在我给你的代码中所做的。 如果有帮助,请告诉我 :)


没错,我想要这样的按钮显示出来。我会尝试一下并告诉你它是否有效。 - Sachin Parashar
嗨Ruchir。非常感谢您的关心。我现在刚试图实现它,但是我在应用它时出现了错误。我将错误和我的代码粘贴到我的问题描述中。 - Sachin Parashar
谢谢你,Ruchir。现在它运行得很好。只需删除那个MediaSession代码,它就可以工作了。 - Sachin Parashar
@SachinParashar 很好!很高兴能够提供帮助。 :-) - Ruchir Baronia
嘿,Ruchir,你能帮我解决这个问题吗:http://stackoverflow.com/questions/34392765/push-notification-not-proper-android?noredirect=1#comment56531281_34392765 - Sachin Parashar
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接