1

In meinem GcmListenerService erhalte ich diese Bündel Daten immer bin:Android kann nicht boolean Wert von Bündel

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

Ich bin kann die Nachricht von

bundle.getString("message"); 

Aber ich kann nicht die bekommen bekommen gehen Boolescher Wert int die Paketdaten. I verwendet:

bundle.getBoolean("proceed",false); 

dies immer falsch ist, geben, selbst wenn der Wert wahr in den Bündeldaten. Es ist so einfach, ich weiß nicht, was ich vermisse. Danke.

+1

Haben Sie versucht, 'bundle.getString (" proceed ");' zu verwenden, um zu sehen, ob es als 'String' gespeichert ist? –

+0

Nein, ich habe getBoolean verwendet, da es einen Standardwert hat. Ich glaube, ich muss mit getString überprüfen und auf Null-Wert überprüfen. danke für den Vorschlag. – ArJ

+0

wurde versehentlich gesendet. – ArJ

Antwort

2

Auch wenn der Wert von proceed ein boolean zu sein scheint es wahrscheinlich in den Bundle als String gespeichert ist, und das ist, warum Sie nicht den Wert davon bundle.getBoolean() mit bekommen können.

Sie sollten stattdessen verwenden.

Sie können die String in eine boolean parsen, wenn Sie müssen.

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

danke, es funktioniert jetzt. Aber ich habe es als Boolean an den gcm-Server per php gesendet. also dachte ich, es würde boolean bleiben. – ArJ

+2

Ich kann die Verwirrung dort sehen. Ich habe versucht, irgendwo in der Dokumentation zu finden, ob es sagte, dass alle Werte als Strings gesendet werden, aber nicht viel gefunden haben. Die 'onMessageReceived' besagt, dass' 'Bundle' 'Nachrichtendaten als String-Schlüssel/Wert-Paare' ist. Nicht sicher, ob das immer "String" für Schlüssel und Wert bedeutet. –