【问题标题】:How to find that notification view is expanded or not如何查找通知视图是否已扩展
【发布时间】:2015-03-18 08:15:10
【问题描述】:

我正在使用以下代码显示通知,它可以正常工作。我正在寻找可以了解通知是否展开的侦听器。

如果通知被展开,我想打开应用程序,否则打开应用程序的特定活动。

                 Intent intent= new Intent(context, Activity1.class);
                 PendingIntent pendingIntent = PendingIntent.getActivity(context, getNextRandom(), intent, 0);
                 Builder newBuilder newBuilder = new Notification.Builder(context);
                 newBuilder.setContentTitle(title)
                 .setContentText(subtitle)
                 .setAutoCancel(true)
                 .setSmallIcon(R.drawable.icon)
                 .setTicker(notificationMessage)
                 .setContentIntent(pendingIntent);
                 Notificationnotification = new Notification.BigTextStyle(newBuilder)
                 .setBigContentTitle(notificationTitle)
                 .bigText(text)
                 .build();

让我知道是否有办法实现这一点?

【问题讨论】:

  • 我看到这种情况发生的唯一方法是使用RemoteViews。为默认和扩展状态创建自己的布局。为这些布局中的每一个设置不同的点击PendingIntents。最后,设置builder.setContent(defaultRemoteViews)。还有notification.bigContentView = expandedRemoteViews;

标签: android android-notifications


【解决方案1】:

没有办法知道通知是否打开...您可以做的是在展开的通知中添加按钮,按下它们的作用与按下通知本身的作用不同。

【讨论】:

  • 但是在通知展开并且我点击通知而不是按钮的情况下,您的情况将不起作用
  • 你是对的......但我的回答是“没有办法知道通知是否打开”
【解决方案2】:

也许没有直接的方法,但下面的 hack 可能会有所帮助!!

您可以自定义通知布局并使用 RemoteView,设置 setOnClickPendingIntent 为整个视图启动服务,以便在单击通知时收到通知。

当用户点击通知时,服务会启动并显示来自服务的新扩展自定义布局(您将旧通知替换为新通知)

也许还可以使用 startforeground 显示来自同一服务的初始通知,这样您的应用不会被终止,并且可以更快地接收到视图点击,因为服务已经在运行并且更改视图的响应时间更短。

请参阅this 了解远程视图,this 了解从通知点击启动服务。

【讨论】:

  • 它不起作用,因为通知可以通过向上/向下滑动来展开/折叠,而无需单击。
猜你喜欢
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-06
  • 2020-03-20
  • 1970-01-01
相关资源
最近更新 更多