Obsługa SMS i telefonii



Podobne dokumenty
Systemy operacyjne na platformach mobilnych

akademia androida Service, BroadcastReceiver, ContentProvider część IV

Powiadomienia w systemie Android

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

Systemy operacyjne na platformach mobilnych

Programowanie urządzeń mobilnych w systemie Android. Ćwiczenie 7 Wykorzystanie układu LinearLayout

Systemy operacyjne na platformach mobilnych

Programowanie urządzeń mobilnych. dr inż. Juliusz Mikoda

Android, wprowadzenie do SDK

AndroidManifest.xml. Plik manifestu opisuje podstawowe charakterystyki aplikacji i definiuje jej komponenty.

akademia androida Intencje oraz URI część III

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

Systemy operacyjne na platformach mobilnych

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku.

[Android] Podstawy programowania

Mariusz Fraś. Instytut Informatyki. olitechnika Wrocławska. Systemy Wbudowane. Android. Dr inż. Mariusz Fraś. maf 1

Podstawowe elementy GUI - zadania

Programowanie urządzeń mobilnych w systemie Android. Ćwiczenie 8 Wykorzystanie układu RelativeLayout

Laboratorium Systemów Mobilnych. Wykład 1

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski

Zaawansowane aplikacje WWW - laboratorium

Programowanie Urządzeń Mobilnych. Część II: Android. Wykład 2

Fragmenty są wspierane od Androida 1.6

Podstawowe elementy GUI - zadania

Systemy operacyjne na platformach mobilnych

Mobilne aplikacje multimedialne

Programowanie Urządzeń Mobilnych. Laboratorium nr 9,10

Wykorzystanie map i geolokalizacji

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Tworzenie i wykorzystanie usług

akademia androida Składowanie danych część VI

Mechanizm powiadomień

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

OmniTouch 8400 Instant Communications Suite Integracja z programem Microsoft Outlook

Android poradnik programisty

dr Artur Bartoszewski dr Artur Bartoszewski - Aplikacje mobilne - Wykład

Klasy abstrakcyjne, interfejsy i polimorfizm

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Android pierwsza aplikacja

Laboratorium Systemów Mobilnych. Wykład 2

komunikator na platformę Android wspierający protokół GG

Java: interfejsy i klasy wewnętrzne

Podręcznik instalacji i konfiguracji aplikacji 7 Office Ship Control dla Microsoft Office 2007 i Siódemka S.A. Warszawa, dnia r.

OmniTouch 8400 Instant Communications Suite Integracja z programem IBM Lotus Notes

Outlook Express - konfigurowanie i korzystanie.

Tworzenie pliku źródłowego w aplikacji POLTAX2B.

Laboratorium 7 Blog: dodawanie i edycja wpisów

Obsługa poczty internetowej przez stronę internetową (www)

W otwartym oknie w zakładce Ogólne znajdujemy opcje Podpis. Po zaznaczeniu pola wyboru, w edytorze możemy zredagować dołączaną treść.

Programowanie obiektowe

Programowanie obiektowe

Android tworzenie aplikacji mobilnych

Android. Podstawy tworzenia aplikacji. Piotr Fulma«ski. March 4, 2015

Mechanizm zapisu preferencji

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie aplikacji dla technologii mobilnych. mgr inż. Anton Smoliński

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

"ANDROID - Media Framework (Audio,Video), Telephony APIs(SMS/MMS), Speech Synthesis & Recognition"

Życie aktywności Nawigując przez aplikacje poszczególne Aktywności przechodzą pomiędzy stanami. Dla przykładu gdy aktywność uruchamia się po raz

Klasy i obiekty cz II

Instrukcja korzystania z systemu poczty NetMail (wersja skrócona)

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Rozpoczęcie pracy z programem.

Aplikacje WWW - laboratorium

Konfiguracja poczty IMO dla urządzeń mobilnych z systemem ios oraz Android.

namespace HostedReceiver { public class Receiver: IConfigureThisEndpoint, AsA_Server {

Grafika trójwymiarowa

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Instrukcja obsługi certyfikatów w programie pocztowym MS Outlook Express 5.x/6.x

ANDROID. OpenGL ES 1.0. Tomasz Dzieniak

Makra Access 2003 wg WSiP Wyszukiwanie, selekcjonowanie i gromadzenie informacji Ewa Mirecka

Programowanie obiektowe

INSTRUKCJE UŻYTKOWNIKÓW

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Klient poczty elektronicznej - Thunderbird

Integracja z pocztą Gmail. Integracja Poczta Google. Wersja 1.0 SPIS TREŚCI

APLIKACJA SHAREPOINT

Tworzenie aplikacji rozproszonej w Sun RPC

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Instrukcja ustawienia autorespondera (odpowiedzi automatycznych) dla pracowników posiadających konto pocztowe Microsoft Outlook Exchange

Java Platform Micro Edition

Pomoc dla usługi GMSTHostService. GMSTHostService. Pomoc do programu 1/14

Minimalna wspierana wersja systemu Android to zalecana 4.0. Ta dokumentacja została wykonana na telefonie HUAWEI ASCEND P7 z Android 4.

akademia androida Http i AsyncTask część VII

Analiza malware'u SandroRAT_sec Kaspersky_Mobile_Security.apk

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

INSTRUKCJA OBSŁUGI PANELU WEBMAIL

Licencja SEE Electrical Free

Logger. Następnie w klasie Bootstrapper muimy zarejestrować nasz nowy logger:

Odbieranie zamówień przez Wykonawcę i Dyrektora szkoły

DWM-157. Modem USB HSPA+ Podręcznik użytkownika

Architektury usług internetowych. Laboratorium 5. JADE

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Aplikacje w środowisku Java

Aplikacje WWW - laboratorium

Programowanie obiektowe i zdarzeniowe

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Konfiguracja konta pocztowego w Thunderbird

Motorola Phone Tools. Krótkie wprowadzenie

Transkrypt:

Strona 1 Interfejsy API telefonii Wysyłanie wiadomości SMS Odbieranie wiadomości SMS Symulowanie nadchodzących wiadomości SMS Obsługa skrzynki wiadomości SMS Wysyłanie wiadomości e-mail Monitorowanie połączeń telefonicznych

Strona 2 Interfejsy API telefonii Klasy Android SDK umożliwiają programową obsługę krótkich wiadomości tekstowych SMS (Short Messaging Service) oraz obsługę funkcji telefonu. Przeznaczone są do tego klasy określane jako tzw. menadżery: android.telephony.smsmanager menadżer SMS, android.telephony.telephonymanager menadżer telefonii.

Strona 3 Wysyłanie wiadomości SMS (metoda 1) Pierwsza, w pełni programowa metoda wysyłania wiadomości tekstowych, polega na wykorzystaniu interfejsów API telefonii, a konkretnie klasy android.telephony.smsmanager. String nr_telefonu; String wiadomosc; intencja wywoływana po wysłaniu wiadomości intencja wywoływana po dostarczeniu powiadomienia SmsManager smsmgr = SmsManager.getDefault(); smsmgr.sendtextmessage(nr_telefonu, null, wiadomosc, null, null); adresat (numer telefonu) numer centrum SMS (null to domyślne) tekst wiadomości obiekty klasy PendingIntent obiekty klasy String Wysyłanie wiadomości tekstowych SMS wymaga nadania dla aplikacji odpowiedniego uprawnienia: Wymagane uprawnienie android.permission.send_sms

Strona 4 Wysyłanie wiadomości SMS (metoda 2) Druga metoda wysyłania wiadomości tekstowych polega na wywołaniu predefiniowanej intencji, która uruchamia systemową aplikację do wysyłania wiadomości SMS. Jako rodzaj akcji należy podać Intent.ACTION_VIEW, natomiast dane dla intencji to treść wiadomości i jej typ MIME. Wadą tego rozwiązania jest konieczność wprowadzania numeru telefonu w aplikacji systemowej. String msg; Intent intencja = new Intent(Intent.ACTION_VIEW); intencja.putextra( sms_body, msg); nazwa akcji (działania) związanego z intencją dane dla intencji intencja.settype( vnd.android-dir/mms-sms ); // typ MIME danych startactivity(intencja); Nie jest wymagane uprawnienie android.permission.send_sms (posiada je aktywność systemowa)

Strona 5 Wiadomości SMS w emulatorze W przypadku uruchamiania aplikacji wysyłających wiadomości SMS w emulatorze systemu Android, możliwe jest wysyłanie wiadomości pomiędzy dwoma uruchomionymi emulatorami. Numerem telefonu jest zawsze numer portu emulatora, widoczny w lewymgórnym rogu belki okna emulatora. Potwierdzeniem wysłania wiadomości jest brak wygenerowania wyjątku przez metodę sendtextmessage() i odebranie wiadomości w aplikacji systemowej w drugim oknie emulatora. Do obsługi wiadomości tekstowych w emulatorze służy systemowa aplikacja SMS/MMS (Messaging).

Strona 6 Obsługa wiadomości SMS w emulatorze numer telefonu to numer portu komputera na którym działa emulator numer telefonu nadawcy Systemowa aplikacja SMS/MMS Aplikacja wysyłająca Emulator odbierający Emulator odbierający

Strona 7 Monitorowanie przychodzących wiadomości SMS Najprostszy sposób nasłuchiwania przychodzących wiadomości SMS to utworzenie klasy dziedziczącej po android.content.broadcastreceiver. public class NaszMonitorSMS extends BroadcastReceiver private static final String AKCJA= android.provider.telephony.sms_received ; @Override public void onreceive(context c, Intent intencja) if (intencja!= null && intencja.getaction()!= null && AKCJA.compareToIgnoreCase(intencja.getAction()) == 0) Object[] tab = (Object[]) intencja.getextras().get( pdus ); SmsMessage[] msg = new SmsMessage[tab.length]; for (int i = 0; i < tab.length; i++) msg[i] = SmsMessage.createFromPdu( (byte[]) tab[i]); tablica obiektów PDU (Protocol Description Unit), reprezentujących wiadomości SMS metoda abstrakcyjna wywoływana automatycznie po nadejściu wiadomości SMS intencja przekazuje obiekt SmsMessage konwersja obiektów PDU na obiekty SmsMessage

Strona 8 Rejestracja i uprawnienia monitora wiadomości SMS Monitor nasłuchu utworzony na str. 69 należy zarejestrować w pliku manifestu aplikacji AndroidManifest.xml, w węźle receiver. Odbieranie wiadomości tekstowych SMS wymaga nadania dla aplikacji odpowiedniego uprawnienia: Wymagane uprawnienie android.permission.receive_sms W efekcie fragment pliku AndroidManifest.xml może być następujący: <application... rejestrowanie monitora nasłuchu SMS <receiver android:name="naszmonitorsms" > <intent-filter > <action android:name="android.provider.telephony.sms_received"/> </intent-filter> </receiver> </application> <uses-permission android:name="android.permission.receive_sms" />...

Strona 9 Symulacja nadejścia wiadomości SMS w emulatorze W środowisku Eclipse możliwa jest symulacja nadchodzących wiadomości tekstowych SMS. Należy w tym celu przejść do widoku Emulator Control wybierając w głównym menu polecenia Window Show View Other Android Emulator Control. W oknie, które się pojawi (patrz str. 72), w sekcji okna Telephony actions należy: wypełnić pole Incoming number (numer telefonu), zaznaczyć pole wyboru SMS, wypełnić pole Message tekstem wiadomości, kliknąć przycisk Send. W przypadku symulacji przychodzącego połączenia telefonicznego zaznaczamy pole Voice i nie wypełniamy pola Message.

Strona 10 Okno środowiska Eclipse do symulacji nadejścia wiadomości tekstowej SMS

Strona 11 Obsługa skrzynki wiadomości tekstowych SMS Interfejsy API telefonii umożliwiają kwerendę zawartości skrzynki odbiorczej. Przykładowy plik XML interfejsu użytkow. /res/layout/sms_inbox.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/tv" android:layout_width="fill_parent" android:layout_height="fill_content" /> </LinearLayout> Dostęp do skrzynki odbiorczej wiadomości tekstowych SMS i odczyt wiadomości wymagają nadania dla aplikacji odpowiedniego uprawnienia: Wymagane uprawnienie android.permission.read_sms kontrolka TextView wyświetla treść wiadomości SMS jako pojedynczy element listy (tworzenie listy patrz str. 74)

Strona 12 Obsługa skrzynki wiadomości tekstowych SMS (c.d.) Lista elementów każdy z nich zawiera część treści wiadomości SMS. public class SMSInboxDemo extends ListActivity private ListAdapter adapter; identyfikator URI wskazuje skrzynkę odbiorczą wiadomości SMS private static final Uri SMS_INBOX = Uri.parse( content://sms/inbox ); @Override public void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); Cursor c = getcontentresolver().query(sms_inbox,null,null,null,null); startmanagingcursor(c); String[] kolumny = new String[] body ; int[] nazwy = new int[] R.id.tv ; adapter = kwerenda przy użyciu obiektu kursora adapter dla listy klasy ListActivity new SimpleCursorAdapter(this,R.layout.sms_inbox,c,kolumny,nazwy); setlistadapter(adapter);

Strona 13 Identyfikatory URI skrzynek wiadomości tekstowych SMS Dostęp do pozostałych folderów w skrzynce wiadomości tekstowych SMS można uzyskać podając odpowiedni identyfikator URI folderu jako argument metody getcontentresolver. folder wiadomości tekstowych SMS Wszystkie Odebrane Wysłane Wersje robocze Nieodebrane Niewysłane Zakolejkowane Niedostarczone Konwersacje identyfikator URI folderu content://sms/all content://sms/inbox content://sms/sent content://sms/draft content://sms/outbox content://sms/failed content://sms/queued content://sms/undelivered content://sms/conversations W analogiczny sposób można uzyskać dostęp do wiadomości MMS, np. content://mms-sms/inbox

Strona 14 Wysyłanie wiadomości e-mail Android nie zwiera interfejsów API do wysyłania wiadomości e-mail. Jedyna możliwość to uruchomienie systemowej aplikacji do obsługi poczty elektronicznej, np. za pomocą intencji o akcji ACTION_SEND. Intent intencja = new Intent(Intent.ACTION_SEND); String[] adresat = new String[] adresat@serwer.pl ; String temat = Temat wiadomości ; String tresc = To jest treść wiadomości. ; intencja.putextra(intent.extra_mail, adresat); intencja.putextra(intent.extra_subject, temat); intencja.putextra(intent.extra_text, tresc); // do wiadomości (carbon copy): // intencja.putextra(intent.extra_cc, /* adresat kopii */); // ukryte do wiadomości (blind carbon copy): // intencja.putextra(intent.extra_bcc, /* ukryty adresat kopii */); intencja.settype( message/rfc822 ); // typ MIME danych startactivity(intencja);

Strona 15 Informacja o stanie telefonu Do obsługi funkcji telefonu służy tzw. menadżer telefonii, czyli klasa android.telephony.telephonymanager. Umożliwia ona uzyskanie informacji o usługach telefonicznych dostępnych w urządzeniu oraz o zmianach stanu połączenia telefonicznego. Obsługa funkcji telefonicznych powoduje w momencie nadejścia połączenia telefonicznego przejście działających aplikacji w stan wstrzymania (pauza) i kontynuowanie ich działania po zakończeniu połączenia telefonicznego. Uzyskanie dostępu do informacji o stanie telefonu wymaga nadania dla aplikacji odpowiedniego uprawnienia: Wymagane uprawnienie android.permission.read_phone_state W środowisku Eclipse możliwa jest symulacja nadchodzących połączeń telefonicznych (patrz str. 78) w podobny sposób jak w przypadku wiadomości tekstowych SMS.

Strona 16 Okno środowiska Eclipse do symulacji nadejścia połączenia telefonicznego

Strona 17 Monitorowanie przychodzących połączeń telefonicznych W celu monitorowania przychodzących połączeń telefonicznych należy utworzyć klasę dziedziczącą po PhoneStateListener i jej obiekt przekazać do metody listen. public class TelefoniaDemo extends Activity @Override public void oncreate(bundle savedinstancestate) //... super.oncreate(savedinstancestate); TelephonyManager tm = (TelephonyManager) getsystemservice(context.telephony_service); tm.listen(new NaszPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE); pobranie obiektu menadżera telefonii metoda listen i implementacja klasy PhoneStateListener nasłuchuje zmian stanu telefonu

Strona 18 Monitorowanie przychodzących połączeń telefonicznych (c.d.) //... class NaszPhoneStateListener extends PhoneStateListener @Override stan telefonu public void oncallstatechanged(int state, String incomingnumber) super.oncallstatechanged(state, incomingnumber); switch (state) // sprawdzenie stanu telefonu case TelephonyManager.CALL_STATE_IDLE: // stan bezczynności break; case TelephonyManager.CALL_STATE_RINGING: // poł.przychodz. break; case TelephonyManager.CALL_STATE_OFFHOOK: // poł. odebrane break; default: break; klasa wewnętrzna numer telefonu połączenia przychodzącego Metoda wywoływana automatycznie w momencie wykrycia połączenia przychodzącego lub zmiany stanu telefonu. Dostępny jest stan telefonu i numer telefonu połączenia przychodzącego. Przydatna uwaga: numer telefonu urządzenia mobilnego zwracany jest przez metodę getline1number() z klasy TelephonyManager.