2012. október 18., csütörtök

Java ME és az SMS

Mobil alkalmazások fejlesztése órára ki kellett ötölnöm egy projekt tervet. Mivel nincs okostelefonom, platformnak a Java ME-t választottam, noha érdekelne az Android, csak tesztkészülék nélkül értelmetlen lenne alkalmazást fejleszteni. Symbian-t is választhattam volna, de sok értelmét nem látom, hogy megtanuljam, mert hanyatlik. Emellett időm sincs most sok, így valami egyszerűbb programot gondoltam megírni a félév során.

Ki is agyaltam egy egyszerű, de hasznos alkalmazás ötletet. Nem írom le, ez a bejegyzés most nem erről szól. A lényeg, hogy SMS-ekkel való operálás és SMS küldés van benne. A tanár még kiegészítette az ötletet, amihez kéne SMS olvasás is.

Az első akadály, amit olvastam, hogy egy Java ME-s alkalmazás nem tudja fogadni a telefonra érkező SMS-eket, nem tudja interceptálni a folyamatot. Csak olyan SMS-t tud fogadni, amit kifejezetten neki, az ő portjára küldtek.

Mondjuk ez még nem lenne baj, ez még megkerülhető lenne azzal, ha az app hozzáfér az inboxhoz. De itt a második bökkenő, nem tud hozzáférni. Symbian-nal viszont megoldható... és gondoltam, hogy feladom az elveket és megpróbálom abban, de a Nokia oldala jelenleg nem akarja az igazságot...

Így hát marad az eredeti ötlet, ami csak küld. Ezt ki is próbáltam, működik... bár itt is van némi hiányosság. Az SMS-t ugyan szépen elküldi, fogadó oldalon minden rendben van, viszont a küldő készülékben nem kerül be a kimenő mappába.

Az SMS-t küldő kód fél perc guglizással is megtalálható:
String message = "Üzenet";
String address = "0036...";
String url = "sms://" + address + ":0";
MessageConnection messageconnection = null;
try {
    messageconnection = (MessageConnection) Connector.open(url);
    TextMessage textmessage = (TextMessage) messageconnection.newMessage(MessageConnection.TEXT_MESSAGE);
    textmessage.setAddress(url);
    textmessage.setPayloadText(message);
    messageconnection.send(textmessage);
    switchDisplayable(null, editor);
} catch (IOException ex) {
    System.out.println(ex.getMessage());
    Alert a = new Alert(ex.getMessage());
    switchDisplayable(a, editor);
} finally {
    try {
        if (messageconnection != null) {
            messageconnection.close();
        }
    } catch (IOException ex) {
    }
}

Nincsenek megjegyzések: