【问题标题】:How to get the intent of the Active Notification?如何获得主动通知的意图?
【发布时间】:2020-12-16 12:03:16
【问题描述】:

我正在创建一个具有广播接收器的应用,该接收器通过清单注册。

它接收来自其他应用的意图并显示通知。 该通知有一个pendingIntent,它在点击时启动MainActivity,并使用意图将一些值(如发送者应用程序的packageName)传递给它。 现在,如果用户没有使用通知打开MainActivity,我正在使用NotificationManager.getActiveNotifications() 方法获取活动通知,但我无法从中获取意图。

到目前为止我尝试过的事情:

  1. 我不想使用动态广播接收器,因为我想在后台接收 Intent。
  2. 我尝试在sharedPreference 中创建通知时存储数据,如果有任何活动通知,我稍后可以进入MainActivity。不确定这是否是最好的方法。
  3. 使用服务的onBind方法获取MainActivity中的数据,但是后台服务无法从广播接收器启动,所以只能在MainActivity运行时起作用。

有没有办法通知MainActivity来自广播接收器的数据,即使MainActivity没有运行,并在MainActivity启动时立即获取数据。 任何帮助将不胜感激。

【问题讨论】:

    标签: android android-intent broadcastreceiver android-service


    【解决方案1】:

    在我看来,使用NotificationManager.getActiveNotifications() 获取您存储在通知中的信息不是一个好主意。 您已经在问题中说明了为什么这是一个坏主意的一些原因。此外,如果用户在打开您的应用之前删除了通知,那么您将丢失所有信息。

    最好的方法是在广播接收器中接收数据时将数据存储在设备内存中(存储数据的方式取决于数据本身,可能是 sharedPreferences、数据库、文件...)。

    MainActivity 然后你可以从内存中检索数据并处理它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-10
      • 2016-08-05
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      相关资源
      最近更新 更多