如何在android中使用Action创建通知

时间:2017-03-11 16:14:17

标签: java android notifications bundle action

我想知道如何在Android中使用动作图标创建通知,允许我在主要活动中调用方法。

就像这张图片中的那个:Notification icon exemple

1 个答案:

答案 0 :(得分:3)

首先欢迎使用stackoverflow。我想提醒您,这不是一个学习如何编程的网站,而是一个网站,可以提出有助于社区的实际问题。您的问题必须详细,具体到您的代码或尝试以及错误日志。

话虽如此,这是创建通知的最佳方式:

第1步 - 创建通知构建器

第一步是使用NotificationCompat.Builder.build()创建通知构建器。您可以使用Notification Builder设置各种通知属性(小图标,大图标,标题,优先级等)

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)

第2步 - 设置通知属性

拥有Builder对象后,可以根据需要使用Builder对象设置其Notification属性。但这必须至少设置以下 -

  • setSmallIcon()
  • 设置的小图标
  • 标题,由setContentTitle()
  • 设置
  • 详细信息文本,由setContentText()

    设置
    mBuilder.setSmallIcon(R.drawable.notification_icon);
    
    mBuilder.setContentTitle("I'm a notification alert, Click Me!");
    
    mBuilder.setContentText("Hi, This is Android Notification Detail!");
    

第3步 - 附加操作

这是可选的,仅在您希望附加通知操作时才需要。操作将允许用户直接从通知转到应用程序中的活动(他们可以查看一个或多个事件或进一步工作)。

该操作由PendingIntent定义,该PendingIntent包含在您的应用程序中启动Activity的Intent。要将PendingIntent与手势相关联,请调用NotificationCompat.Builder的相应方法。

例如,如果要在用户单击通知抽屉中的通知文本时启动Activity,则通过调用setContentIntent()添加PendingIntent。

PendingIntent对象可帮助您代表您的应用程序执行操作,通常在以后执行,无论您的应用程序是否正在运行。

还有stackBuilder对象,它将包含已启动Activity的人工后台堆栈。这样可以确保从“活动”向后导航导出应用程序到主屏幕。

Intent resultIntent = new Intent(this, ResultActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(ResultActivity.class);

// Adds the Intent that starts the Activity to the top of the stack
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =  stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);

第4步 - 发出通知

最后,通过调用NotificationManager.notify()发送通知,将Notification对象传递给系统。确保在通知之前调用构建器对象上的NotificationCompat.Builder.build()方法。此方法组合了已设置的所有选项并返回新的Notification对象。

NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

// notificationID allows you to update the notification later on.
mNotificationManager.notify(notificationID, mBuilder.build());

我希望这能回答你的问题。