Learning Advanced JavaScript

http://ejohn.org/apps/learn/
by John Resig.

Kanns kaum erwarten, Secrets of the JavaScript Ninja in den Händen zu halten.

World’s Largest Google Nexus One Phone

jQuery Easing cheat sheet

http://commadot.com/jquery/easing.php

Rymdreglage – 8-bit trip

Mein Problem mit SmsManager

In meinem neuen Projekt verwende ich den android.telephony.SmsManager zum versenden von SMS-Nachrichten:

String number = "123456789"; String message = "Hallo, SMS!";
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(number, null, message, null, null);

Sieht ja schon fast zu einfach aus – jedoch trat bei einigen Nachrichten folgendes Problem auf:


Verdammt. Nach endlos langer Zeit, in der ich das Internet nach ähnlichen Problemen durchforstet habe, noch immer keine Lösung.

Bis ich vor einigen Minuten plötzlich auf das hier gestoßen bin: Issue 147
Ganz Unten steht folgendes:

Test Cases:
1. Check that the correct SMS message is received at the receiving end and use logs to confirm that the contents of the original intent that started the SMSService is properly received at the ResultReceiver for the following cases:
  1.1 Create a rule with SMS action with SMS message > 160 characters and trigger the rule.
  1.2 Create a rule with SMS action with SMS message < 160 characters and trigger the rule.

160 Zeichen. Also sofort 2 Nachrichten mit je 160 bzw.161 Zeichen verfasst und ausprobiert. Ergebnis: Bei 160 Zeichen kein Problem, bei 161 Zeichen die altbekannte Exception.

Warum aber eigentlich 160 Zeichen?
Why text messages are limited to 160 characters

Nun war das Problem also gefunden – aber wie jetzt die SMS ausfplitten? Nach einem erneuten Blick in die Doku war die Lösung schnell gefunden: divideMessage(String text). Blöderweise war mir diese Funktion vorher noch nie aufgefallen. Genauso wenig wie die Methode sendMultipartTextMessage(…). Und dabei könnte ich schwören, dass gestern nur die 2 Methoden sendDataMessage(…) und sendTextMessage(…) drin standen =)

Fazit:

SmsManager sms = SmsManager.getDefault();
ArrayList<String> messages = sms.divideMessage(message);
sms.sendMultipartTextMessage(number, null, messages, null, null);

Das Ganze läuft jetzt ohne Probleme – egal wie viele Zeichen in der SMS drinstecken :)


[Update] Gerade hab ich noch eine Blogeintrag gefunden, in dem das Senden und Empfangen von SMS-Nachrichten erläutert wird: Sending and Receiving SMS in Android

voilà!

Use curl to get Google’s ClientLogin token for C2DM

curl -k -X POST https://www.google.com/accounts/ClientLogin -d Email=ACCOUNT -d Passwd=PASSWORD -d accountType=HOSTED_OR_GOOGLE -d service=ac2dm

…everything after Auth= is yours :)

Cloud to Device Messaging

Oder kurz C2DM bietet einen wunderschönen Weg, um Daten aus der Wolke schnell und effizient an ein Android-Gerät zu senden – die Voraussetzungen dafür sind Android 2.2 und ein Google-Konto.

Chrome to PhoneBestes Beispiel für den Einsatz des Services ist Googles Chrome to Phone. Damit können URLs und anderes nützliches Zeug wie zum Beispiel YouTube-Videos oder Routen und Standorte aus Google Maps mit nur einem Klick aus Google Chrome / Mozilla Firefox (verdammt hübsches WP-Theme) zielsicher ans eigene Android-Handy gesendet werden. Außerdem kann auch der im Browser selektierte Text gesendet werden – dieser landet dann in der Zwischenablage des Android-Gerätes. Diese Funktion habe ich mir zu Nutze gemacht, um längere SMS-Konversationen einfach im Browser einzutippen und ans Handy zu pushen. Dort muss dann nur noch in der bevorzugten Messaging-App (Handcent SMS :>) der Text eingefügt und auf Senden gedrückt werden. voilà – so spart man sich minutenlange Tipparbeit :)

Aber Vorsicht: Der Service ist eigentlich nicht dazu gedacht, um größeren Content wie z.B. meine SMS-Texte zu senden. Vielmehr sollte er nur genutzt werden, um eine Android-App darauf aufmerksam zu machen, dass neue Daten zum Abrufen bereit sind. Das erklärt wohl, warum ich nicht mehr als 966 Zeichen auf einmal senden kann… (siehe auch Limitations)

Von meiner Seite wär eine kleine Android-Applikation in Zusammenarbeit mit Googles Web Toolkit und App Engine geplant, welches es möglich macht, direkt aus dem Browser heraus SMS-Nachrichten zu senden und zu empfangen.

Zum Schluss noch 2 Links zum Thema:

Android Cloud to Device Messaging Framework in den Google Labs

Android Cloud to Device Messaging im Android Developers Blog

read this later

Bytecode basics

The Java serialization algorithm revealed

D’oh!

Follow

Get every new post delivered to your Inbox.