【问题标题】:Android cannot get boolean value from bundleAndroid 无法从包中获取布尔值
【发布时间】:2016-04-19 14:34:56
【问题描述】:

在我的 GcmListenerService 中,我得到了这个捆绑数据:

Bundle[{gcm.notification.e=1, gcm.notification.title=SomeApp, proceed=true, gcm.notification.body=Some text, message=Some message, collapse_key=example.com.SomeApp}]

我可以通过

得到消息
bundle.getString("message");

但我无法在捆绑数据中获取 proceed 布尔值。 我用过:

bundle.getBoolean("proceed",false);

即使捆绑数据中的值为 true,这始终给出 false。 这很简单,我不知道我错过了什么。 谢谢。

【问题讨论】:

  • 您是否尝试过使用bundle.getString("proceed"); 来查看是否存储为String
  • 不,我使用 getBoolean 因为它有一个默认值。我想我将不得不检查 getString 并检查空值。谢谢你的建议。
  • 它是不小心发送的。

标签: android google-cloud-messaging android-bundle gcmlistenerservice


【解决方案1】:

尽管proceed 的值看起来是boolean,但它很可能以String 的形式存储在Bundle 中,这就是为什么您无法使用bundle.getBoolean() 获得它的值的原因。

您应该改用bundle.getString("proceed");

如果需要,您可以将String 解析为boolean

boolean proceed = Boolean.parseBoolean(bundle.getString("proceed", "false"));

【讨论】:

  • 谢谢,它正在工作。但我通过 php 将它作为布尔值发送到 gcm 服务器。所以我认为它会保持布尔值。
  • 我可以看到那里的混乱。我尝试在文档中的某个地方找到它是否说所有值都作为字符串发送但没有找到太多。 onMessageReceived 表示 Bundlemessage data as String key/value pairs。不确定这是否意味着键和值始终为String
猜你喜欢
  • 2015-11-27
  • 1970-01-01
  • 2019-06-23
  • 1970-01-01
  • 2014-07-02
  • 2014-02-25
  • 2020-10-01
  • 2016-07-08
  • 2012-02-01
相关资源
最近更新 更多