Sunteți pe pagina 1din 21

Universitatea Politehnic Bucureti Facultatea de Electronic, Telecomunicaii i Tehnologia Informaiei Programul de masterat Tehnologii software avansate pentru comunicaii

Raport de cercetare

Client de e-mail pe platforma Android

ing.Adridan Tudor Gabriel Coordonator lect. univ. dr. ing. Popovici Eduard

Bucureti 2013

Coninut
1. 2. Introducere......................................................................................................................................3 Servicii de E-mail i Protocoalele SMTP/POP............................................................................... 4 2.1. 2.2. 2.3. 2.4. 3. Procesele Serverului de e-mail MTA i MDA..................................................................... 4 Clientul de e-mail.................................................................................................................... 7 POP vs IMAP.......................................................................................................................... 8 Problemele IMAP.................................................................................................................... 8

Platforma Android........................................................................................................................... 9 3.1. Componentele de baza ale unei aplicatii pe platforma Android..............................................9 Activitatea(Activity)........................................................................................................ 9 Servicii (Services)........................................................................................................... 9 Intentii (Intents)............................................................................................................... 9 Baze de continut (Content Providers) .............................................................................. 9 Receptori de evenimente publice (BrodcastReceiver).....................................................9 Wiget-uri....................................................................................................................... 10

3.1.1. 3.1.2. 3.1.3. 3.1.4. 3.1.5. 3.1.6. 3.2.

Arhitectura unei aplicatii n Android..................................................................................... 10 AndroidManifest.xml.................................................................................................... 10 Activitati i Durata ciclului de viata.............................................................................. 10 Schimbari de configuratii.............................................................................................. 11 Context.......................................................................................................................... 11

3.2.1. 3.2.2. 3.2.3. 3.2.4. 4.

Partea practica SendMail............................................................................................................ 11 4.1. 4.2. 4.3. 4.4. 4.5. Proiectare Diagrama de activitati (UML)........................................................................... 12 AndroidManifest.xml............................................................................................................ 13 Activity_welcome.xml & Activity_main.xml....................................................................... 13 WelcomePage.java & MainActivity.java.............................................................................. 17 Rularea aplicatiei................................................................................................................... 19

5. 6.

Abrevieri i vocabular................................................................................................................... 21 Bibliografie ....................................................................................................................................21 2

1. Introducere

n prezent exista toate premisele studierii i dezvoltarii acestui domeniu al comunicarii prin e-mail folosind telefoanele mobile care au ca sistem de operare platforma Android dezvoltata de Google. Aceste premise ar fi: comunicam tot mai mult, ne dorim ca i comunicarea sa se faca simplu i repede, tot mai multi dintre noi folosim internetul pe terminalele mobile, Android detine 40% din piata mondiala a sistemelor de operare pe ispozitivie de tip smartphone, n timp ce competiorii sai detin: iOS 19%, Windows 17%, altii 24%, n conditiile n care n Europa i implicit n Romania utilizatorii de iPhone (iOS) sunt mult sub media globala. Noile dispozitive aparute pe piata de tip tableta, duc la folosirea tot mai intensa a sistemului de operare Android i cu siguranta o gama larga de domenii precum Publicitate, Marketing, Cloud Computing, Medicina, Ecologie, etc, vor lua n calcul acest mijloc usor i rapid de a ajunge la utilizator, o metoda fiind prin mesajele de tip e-mail. Un client de e-mail, sau un Mail User Agent (MUA) cum este denumit n literatura de specialitate este un program aplicatie software folosita pentru a accesa i pentru a gestiona e-mail-urile unui utilizator. De asemenea putem numi un client de e-mail i o aplicatie web care ofera gestionarea mesajelor, i functii de compunere i receptionare, dar termenul cel mai potrivit pentru acest client de e-mail este webmail. Cei mai cunoscuti clienti de e-mail pe platforma Windows sau Linux sunt: Microsoft Outlook, IBM Lotus Notes, Pegasus Mail, Mozilla's Thunderbird, KMail, Evolution i Apple Inc.s Mail, iar pe platforma Android sunt K-9 Mail, Aqua Mail, Gmail for Android, Yahoo! Mail for Android, Hotmail for Android, ProfiMail si MailDroid. Sistemul de operare Android este bazat pe Linux cu o interfaa de programare n Java. Aplicatiile pe acest sistem de operare reprezinta diferite componente care pot re-folosi componentele altei aplicatii. Astfel se ajunge la conceptul de task n Android. Spre exemplu se poate declansa din aplicatia creata o alta aplicatie care este inregistrata n sistemul Android sa trimita mesaje de tip e-mail. O aplicatie poate sa creeze interfata i comenzile necesare pentru compunerea unu mesaj de tip e-mail i o alta aplicatie sa efectueze trimiterea mesajului.

2. Servicii de E-mail i Protocoalele SMTP/POP

E-mail-ul, cel mai popular serviciu din orice retea, a revolutionat modul n care oameni comunica prin simplitatea i viteza. Totusi, pentru a rula pe un calculator sau un alt dispozitiv (smartphone, tableta) e-mail-ul foloseste cateva aplicatii i servicii. Doua exemple de protocoale folosite la nivelul Aplicatie sunt Post Office Protocol (POP) i Simple Mail Transfer Protocol (SMTP). Ca i n cazul protocolului HTTP, aceste protocoale definesc procese client-server. Cand cineva scrie un mesaj e-mail, n mod normal foloseste o aplicatie numita Mail User Agent (MUA) sau un client de e-mail. MUA permite mesajelor sa fie trimise i plaseaza mesajele primite de clienti n cutia postala electronica, acestea fiind doua procese distincte. Petru a receptiona mesaje e-mail de la un server de e-mail, clientul de e-mail poate folosi POP. La trimiterea de mesaje de tip e-mail de la client la de la server se foloseste un format al mesajului i comenzi definite de protocolul SMTP. n mod normal un client de email ofera functionalitatea ambelor protocoale intr-o singura aplicatie.

Fig. 1 Client de e-mail Mail User Agent (MUA)

2.1.

Procesele Serverului de e-mail MTA i MDA

Serverul de e-mail opereaza cu doua procese separate: Mail Transfer Agent (MTA) Mail Delivery Agent (MDA)

Procesul realizat de Mail Transfer Agent (MTA) presupune inaintarea e-mail-urilor. Dupa cum putem vedea n figura, MTA primeste mesaje de la MUA sau de la un alt MTA sau un alt server de e-mail. Pe baza header-ului mesajului, acesta determina cum trebuie sa fie inaintat mesajul pentu a ajunge la destinatie. Daca mesajul este destinat unui utilizator a carui casuta de e-mail este pe serverul local, mesajul de e-mail este transmis catre MDA. Daca
4

mesajul este pentru un alt utilizator care nu este n serverul local, MTA ruteaza e-mail-ull catre MTA-ul din apropierea serverului clientului.

Fig. 2 Server de e-mail MTA In figura urmatoare vedem cum Mail Delivery Agent (MDA) accepta un mesaj de email de la un Mail Transfer Agent (MTA) i efectueaza livrarea propriu-zisa a mesajului. MDA receptioneaza mesajul de la MTA i l pune n casuta postala a utilizatorului. MDA poate rezolve i alte probleme de receptionare precum scanare de virusi si filtrare a mesajelor spam. Cele mai multe comunicatii prin mesaje de tip e-mail folosesc aplicatii MUA, MTA i MDA. Totusi exista i alte alternative pentru trimiterea de mesaje e-mail. Un client poate fi conectat la un sistem de e-mail precum IMB Lotus Notes, Novell Grooupwise sau Microsoft Exchange. Aceste sistem de cele mai multe ori au propriul format de mesaje de e-mail i clienti lor comunica cu serverul de e-mail folosind un protocol propriu. Pentru a putea primi sau trimite mesaje prin Internet, acestea detin un e-mail gateway care face conversiile i re-formatarile necesare. O alta alternativa pentru calculatoarele care nu au MUA, acestea se pot conecta la un serviciu(client) de e-mail printr-un browser web pentru a receptiona i trimite mesaje. Unele calculatoare pot sa ruleze propriul MTA i sa gestioneze mesajele de e-mail dintr-o intreaga retea. Spre exemplu, daca doua persoane care lucreaza pentru aceeasi companie isi trimit intre ei mesaje de e-mail folosind un protocol proprietar, mesajele lor vor ramane n sistemul de email al companiei, fara sa ias n reeaua proprie.

Fig. 3 Server de e-mail MDA Mesajele de e-mail poate folosi protocoalele POP i SMTP. POP i POP3 (Post Office Protocol, versiunea 3) sunt protocoale interne de livrare a e-mail-ului i de cele mai multe ori au arhitectura client/server. Ele livreaza e-mail-ul de la server la client (MUA). MDA asculta asteptand ca un client sa se conecteze la server. Odata o conexiunea este stabilita, serverul poate livra mesajul de e-mail clientului. Simple Mail Transfer Protocol (SMTP) pe de alta parte guverneaza transferul extern de e-mail-uri precum trimiterea de la client la serverul de e-mail (MDA), sau transportul de mesaje e-mail intre serverele de e-mail. SMTP permite ca e-mail-uri sa fie transportate prin diferite retele, intre diferite tipuri de servere i aplicatii software pentru clienti i face posibila trimiterea de mesaje prin internet. Formatul mesajelor care folosesc protocolul SMTP este unul rigid i foloseste un set de comenzi si raspunsuri. Aceste comenzi suporta proceduri folosite n SMTP precum initiarea sesiunii, trimiterea de e-mail-uri, inaintarea (forward) mesajelor, verificarea numelor casutelor postale i deschiderea sau inchiderea transferurilor. Cateva dintre comenzile specifice protocolului SMTP sunt: HELO identifica procesele clientului SMTP catre serverul SMTP EHLO o noua versiune de HELO care include extinderea serviciilor MAIL FROM identifica de la cine este mesajul RCPT TO identifica cui i se adreseaza mesajul DATA identifica corpul mesajului.
6

Fig. 4 SMTP i POP

2.2.

Clientul de e-mail

Mail User Agent sau clientul de e-mail nu face altceva decat sa acceseze un port pe serverul de e-mail pentru a accesa casuta de e-mail de pe server,folosind unul din protocoalele IMAP sau POP. Serverul de e-mail contine pe langa serverul SMTP i un server POP3 sau unul IMAP, ambele folosite pentru receptia de mesage. SMTP asculta la portul 25, POP3 la portul 110 i IMAP la portul 143, iar n prezent fiecaruia dintre aceste protocoale ii mai sunt asignate i alte porturi. Cand trimitem i primim un e-mail clientul de e-mail interactioneaza cu serverul SMTP local pentru a efectua expeditia. Serverul SMTP acceseaza serverul POP3 sau IMAP al destinatarului, dupa ce a aflat adresa acestuia de la un server DNS care a facut translatia din numele aflat dupa semnul @, spre ex. @yahoo.com cu adresa serverului care se ocupa de receptionarea mesajelor la acea adresa. Spre ex. pentru serverul imap.mail.yahoo.com avem adresa 212.82.111.223, iar pentru pop.mail.yahoo.com avem adresa 188.125.69.234.

2.3.

POP vs IMAP

Diferenta majora dintre POP3 si IMAP consta in faptul ca: in cazul utilizarii POP3 mesajele se descarca pe calculator si nu vor mai rezida pe server, eliberand spatiul iar in cazul utilizarii IMAP mesajele vor fi citite direct de pe server, putand fi sterse in orice moment. POP3 Avantaje POP3: - mesajele sunt descarcate local, si pot fi citite offline (util in cazul unei conexiuni dial-up) - este foarte popular, exista o sumedenie de programe ce pot fi utilizate cu POP3 Dezavantaje POP3: - inadecvat pentru un utilizator mobil sau mai multi utilizatori ai aceeasi casute postale. Fiindca mesajele sunt descrcate local si sterse de pe server, mesajele vor exista doar pe acel calculator ce le-a descarcat. - majoritatea clientilor POP3 descarca toate mesajele complet, ceea ce face dificila operatia cand aveti mesaje numeroase si mari. IMAP Avantaje IMAP: - adecvat pentru mobilitate. Mesajele si folderele sunt accesibile de pe orice PC conectat la internet, atta timp ct nu sunt terse - mesajele nu sunt descarcate complet local; putei alege ce descrcai i ce nu Dezavantaje IMAP: - necesita o conexiune internet relativ bun pentru o utilizare rapid. Apar ntarzieri la accesarea folderelor i mesajelor. - la pastrarea mesajelor pe server, csua potal se poate umple relativ repede cu mesaje, ceea ce poate duce la pierderea mesajelor ce nu mai ncap n csu. (Este indicat s nu stocai mesajele citite pe server pentru eliberarea spaiului)

2.4.

Problemele IMAP

Deducem ca varianta cea mai buna ar fi folosirea protocolului IMAP, dar acesta vine cu o problema atunci cand ne dorim implementarea unui client de e-mail. Clientul de e-mail pe care dorim sa l implementam se va conecta la serverul IMAP prin portul 143. Clientul de e-mail genereaza o serie de comenzi text pentru a permite utilizatorului sa listeze directoarele aflate pe serverul de e-mail, listeaza toate header-ele mesajelor, descarca un anumit mesaj, sterge un anumit mesaj sau face o cautare printre mesajele de pe server. Problema apare cand dorim sa citim mesaje din casuta nefiind conectati la internet. Pentru a rezolva aceasta problema cei mai multi clienti de e-mail folosesc o metoda de salvare a mesajelor n memoria cache a dispozitivului folosit. Ca exemplu, clientul va descarca toate mesajele i va depozita intregul lor continut pe dispozitivul local (ca i cand am folosi protocolul POP3). Totusi mesajele nu sunt sterse de pe serverul IMAP, dar se face o copie a lor locala. La urmatoarea conectare la internet, mesajele noi vor fi descarcate, cele receptionate n perioada deconectarii de la internet, i serverul IMAP va actualiza lista de mesaje, care sunt citite/necitite, compuse pentru trimitere/sterse.

3. Platforma Android

3.1.

Componentele de baza ale unei aplicatii pe platforma Android

Componentele sunt: Activitati, Servicii, Intentii, Baze de continut, Receptori de evenimente i wiget-uri. Aceste componente pot rula separat. 3.1.1. Activitatea(Activity) O activitatea reprezinta partea vizibila a unei aplicatii Android. Activitatile folosesc Vederile(Views) i Fragmente(Fragments) pentru a crea interfata cu utilizatorul i pentru a interactiona cu acesta. O aplicatie pe Android poate avea mai multe Activitati. 3.1.2. Servicii (Services) Serviciile efectueaza sarcini n fundal fara a oferi o interfata utilizatorilor. Acestea nu pot notifica utilizatorii folosind framework-ul de notificari din Android. Acestea sunt folosite la procesari ce necesita mult timp, acesta fiind un alt motiv pentru care lucreaza n fundal. 3.1.3. Intentii (Intents) Intentiile sunt mesaje asincrone care permit aplicatiei sa ceara funcionalitati de la diferite componente ale sistemului Android, spre exemplu, de la Servicii i Activitati. O aplicatie poate apela o componenta direct (explicit Intent) sau poate sa ceara sistemului Android sa evalueze componentele inregistrate bazate pe tipul intentiei (implicit Intent). De exemplu aplicatia poate implementa trimiterea unui e-mail printr-o intentie i toate componentele care permit trimiterea de e-mail-uri, adica toti clientii de e-mail vor fi disponibile pentru a fi selectate de utilizator. Aplicatiile se inregistreaza pe ele insele printr-o intentie prin IntentFilter. Intentiile permit combinarea componentelor slab cuplate pentru a efectua anumite sarcini. 3.1.4. Baze de continut (Content Providers) Gestioneaza i expun date pentru alte componente/programe. Prin ContentProvider o aplicatie poate sa transfere date cu alta aplicatie. Android contine o baza de date SQLite care este folosita frecvent complementar cu ContentProvider. 3.1.5. Receptori de evenimente publice (BrodcastReceiver) BrodcastReceiver poate fi inregistrat pentru a primi mesaje i intentii. Un BroadcastReceiver va fi notificat de catre sistemul Android daca situatia specificata are loc. De exemplu un BroadcastReceiver poate fi apelat odata ce sistemul Android a terminat procesul de boot sau daca un apel telefonic este receptionat. BrodcastReceiver reprezinta deci functii de callback pentru diverse evenimente de sistem.
9

3.1.6. Wiget-uri Wiget-urile sunt componente interactive care sunt folosite n mod special n ecranul de start al sistemului de operare Android. n mod normal aceste wiget-uri afiseaza anumite date i permit utilizatorilor sa desfasoare activitati prin intermediul lor. De exemplu, un wiget poate afisa un scurt rezumat al mesajelor de e-mail noi i daca utilizatorul selecteaza un mesaj, poate porni clientul de e-mail cu mesajul selectat.

3.2.

Arhitectura unei aplicatii n Android

3.2.1. AndroidManifest.xml Componentele i setarile unei aplicatii pe platforma Android sunt descrise n fisierul AndroidManifest.xml. Spre exemplu, toate Activitatile i Serviciile unei aplicatii trebuie sa fie declarate n acest fisier. Acesta mai trebuie sa contina permisiile necesare rularii aplicatiei. De exemplu, daca aplicatia are nevoie de acces la retea, acest fapt trebuie mentionat aici. Atributul package defineste pachetul de baza pentru obiectele Java la care se face referire n acest fisier. Daca un obiect Java se afla n alt pachet, acesta trebuie declarat cu numele complet al pachetului calificat. Google Play solicita ca fiecare aplicatie Android sa aiba propriul sau package. Astfel ca este un obicei bun sa folosesti numele domeniului tau ca i nume al pachetului. Acest fapt va evita coliziunile cu alte aplicatii Android. Android:versionName si android:versionCode specifica versiunea aplicatiei i numele vazut de utilizatori. Eticheta <activity> defineste o activitate pentru ca o activitate sa porneasca odata cu rularea aplicatiei, vom avea codul urmator: (action android:name="android.intent.action.MAIN" ). Definitia categoriei android:name="android.intent.category.LAUNCHER" defineste faptul ca aplicatia este adaugata directorului de aplicatii al dispozitivului care ruleaza sistemul Android. Partea uses-sdk din fisierul AndroidManifest.xml defineste versiunea minima de Software Development Kit (SDK) pentru care este valabila aplicatia. Acest fapt previne posibile erori survenite n urma instalarii aplicatiei pe dispozitive care nu suporta aplicatia. 3.2.2. Activitati i Durata ciclului de viata Sistemul Android controleaza durata de viata a aplicatiei. n orice moment sistemul Android se poate opri sau poate distruge aplicatia, spre exemplu, din cauza unui apel primit. Sistemul Android defineste durata de viata a activitatilor prin metode predefinite. Cele mai importante metode sunt:
10

onSaveInstanceState() apelata dupa ce Activitatea este oprita. Metoda este folosita pentru a salva datele astfel ca Activitatea sa isi redobandeasca starea dupa re-pornire onPause() metoda mereu apelata daca o Activitate inceteaza, poate fi apelata pentru a elibera resurse sau pentru a salva date onResume() metoda apelata daca Activitatea este re-pornita, poate fi folosita pentru a initializa anumite campuri 3.2.3. Schimbari de configuratii O Activitate va fi restartata daca o asa numita schimare de configuratie are loc. O schimbare de configurare are loc daca un eveniment important pentru aplicatie este declansat. De exemplu, daca utilizatorul schimba orientarea dispozitivului (vertical sau orizontal). Sistemul Android presupune ca o Activitate e posibil sa foloseasca noile resurse pentru o noua orientare i astfel reporneste Activitatile. Se poate evita repornirea aplicatiei pentru anumite schimbari de configuratie prin urmatoarele linii de cod din AndroidManifest.xml
<activity android:name=".ProgressTestActivity" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden|keyboard"> </activity>

3.2.4. Context Clasa android.content.Context asigura conectarea sistemului Android i a resurselor proiectului. Aceasta este interfata catre informatia globala despre mediul aplicatiei.

4.

Partea practica SendMail

Deoarece asa cum am aratat n lucrare intampinam dificultati n crearea unui client de email chiar daca acesta foloseste protocolul IMAP, adica nu descarca toate mesajele de pe serverul de e-mail asa cum protocolul POP face, n partea aplicativa ne vom rezuma la crearea unei aplicatii care sa trimita un mesaj, folosind un client de e-mail deja existent n sistem, prin declansarea aplicatie care sa trimita mesajul e-mail dupa acesta a fost compus.

11

4.1.

Proiectare Diagrama de activitati (UML)

Fig.5DiagramaUMLdeactivitati

12

4.2.

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="example.sendmailtudor" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="example.sendmailtudor.WelcomePage" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity"> </activity> </application> </manifest>

Astfel se defineste o activitate care sa porneasca odata cu rularea aplicatiei, prin codul: (android:name="android.intent.action.MAIN"). Iar codul : android:name="android.intent.category.LAUNCHER" defineste faptul ca aplicatia este adaugata directorului de aplicatii al dispozitivului care ruleaza sistemul Android. 4.3. Activity_welcome.xml & Activity_main.xml Pentru a crea o activitate avem mai multe optiuni, LinearLayout, RelativeLayout, AbsoluteLayout i Frame Layout. Dintre acestea vom alege Linear Layout, acesta fiind cel mai simplu layout existent pe Android, dar in cadrul careia vor fi integrate si alte tipuri de controale. Interfata grafica a aplicatiilor Android are ca si componente principale View si ViewGroup. Clasa View este clasa de baza pentru subclasa elementelor numite "widgets", iar ViewGroup pentru "layouts".
13

Fig. 6 Views i ViewGroups

Dupa cum am mentionat in partea teoretica anterioare, design-ul interfetelor grafice se realizeaza cu ajutorul unor fisiere xml in care sunt utilizate tag-uri speciale. Pentru a realiza o noua interfata grafica: click dreapta pe proiectul in care vreti sa adaugati noul design, New -> Other -> Android XML File -> Next -> LinearLayoutExample.xml (reprezentand numele fisierului), selectati Layout la tipul resursei unde va fi creat fisierul si Finish. Componenta LinearLayout detine numeroase proprietati printre care cele mai importante ar fi: Orientation Fill model Gravity Padding

Asadar interfata cu utilizatorul este realizata prin activity_welcome.xml i activity_main.xml.

Fig. 7 Interfata cu utilizatorul activity_welcome.xml i activity_main.xml


14

Varianta xml, pentru activity_welcome.xml generata automat n Eclipse va fi urmatoarea:


<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="258dp" android:gravity="center" android:text="@string/welcome_text" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/culoare_text" /> <Button android:id="@+id/buttonStart" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="Start" /> <View android:layout_width="fill_parent" android:layout_height="80dp"> </View> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/autorul_text" /> </LinearLayout>

Iar pentru activity_main.xml, fisierul generat de Eclipse va fi:


<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/textViewPhoneNo" android:layout_width="wrap_content"

15

android:layout_height="wrap_content" android:text="To : " android:textAppearance="?android:attr/textAppearanceLarge" /> <EditText android:id="@+id/editTextTo" android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="textEmailAddress" > <requestFocus /> </EditText> <TextView android:id="@+id/textViewSubject" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Subject : " android:textAppearance="?android:attr/textAppearanceLarge" /> <EditText android:id="@+id/editTextSubject" android:layout_width="fill_parent" android:layout_height="wrap_content" > </EditText> <TextView android:id="@+id/textViewMessage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Message : " android:textAppearance="?android:attr/textAppearanceLarge" /> <EditText android:id="@+id/editTextMessage"

16

android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="top" android:inputType="textMultiLine" android:lines="5" /> <Button android:id="@+id/buttonSend" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Send" /> </LinearLayout>

4.4. WelcomePage.java & MainActivity.java

n randurile de mai jos avem codul prin care se face trecerea de la activitatea de primire a utilizatorului la activitatea unde acesta poate compune mesajul, prin apasarea butonului Start. Scurte explicatii ale programului avem n randurile ce urmeaza:
setContentView(R.layout.activity_welcome) - se asigura ca

activity_welcome.xml este folosit ca i layout al activitatii; pentru a prelua referinta la un buton cu ID-ul buttonStart,
findViewById(R.id.buttonStart);

folosim

cream un ascultator OnClick pentru buton; cea mai importanta parte o reprezinta crearea unei Intentii pentru a porni o noua Activitate. Intentia are nevoie de doi parametrii: un context i numele activitatii pe care dorim sa o pornim MainActivity.class n cele din urma, activitatea noua porneste cu parametrul 0. n acest caz putem oferi codului 0 semnificatia pe care dorim. MainActivity.class va citi acest cod i l va folosi. startActivityForResult inseamna ca activitatea WelcomePage poate astepta informatii inapoi de la MainActivity.

package example.sendmailtudor; import import import import import android.app.Activity; android.content.Intent; android.os.Bundle; android.view.View; android.view.View.OnClickListener;

17

import android.widget.Button; public class WelcomePage extends Activity { Button buttonStart; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_welcome); buttonStart = (Button) findViewById(R.id.buttonStart); buttonStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent myIntent = new Intent(view.getContext(), MainActivity.class); startActivityForResult(myIntent, 0); } }); } }

La apasarea butonului Send toate campurile sunt preluate n variabile i sunt transmise unui Client de email pentru ca mesajul sa fie expediat la destinatie.

package example.sendmailtudor; import import import import import import import android.app.Activity; android.content.Intent; android.os.Bundle; android.view.View; android.view.View.OnClickListener; android.widget.Button; android.widget.EditText;

public class MainActivity extends Activity { Button buttonSend; EditText textTo; EditText textSubject; EditText textMessage; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buttonSend = (Button) findViewById(R.id.buttonSend); textTo = (EditText) findViewById(R.id.editTextTo); textSubject = (EditText) findViewById(R.id.editTextSubject); textMessage = (EditText) findViewById(R.id.editTextMessage); buttonSend.setOnClickListener(new OnClickListener() { @Override

18

public void onClick(View v) { String to = textTo.getText().toString(); String subject = textSubject.getText().toString(); String message = textMessage.getText().toString(); Intent email = new Intent(Intent.ACTION_SEND); email.putExtra(Intent.EXTRA_EMAIL, new String[]{ to}); email.putExtra(Intent.EXTRA_SUBJECT, subject); email.putExtra(Intent.EXTRA_TEXT, message); //need this to prompts email client only email.setType("message/rfc822"); startActivity(Intent.createChooser(email, "Choose an Email client :")); } }); } }

4.5.

Rularea aplicatiei

Pentru a testa aplicatia vom folosi Android Virtual Device Manager (AVD), unde am creat un emulator cu setarile din figura urmatoare.

Fig. 8 Configuratie Android Virdual Device Manager Rezultatul dupa compilarea proiectului este prezentat n urmatoarele doua imagini, reprezentand printscreen-uri dupa rularea aplicatie.

19

Fig. 9 Rularea aplicatiei Android Virtual Device Manager

20

5.

Abrevieri i vocabular

AVD Android Virtual Device IMAP Internet Message Access Protocol MDA - Mail Delivery Agent MTA - Mail Transfer Agent MUA - Mail User Agent permite mesajelor sa fie trimise i plaseaza mesajele primite de clienti n cutia postala electronica, acestea fiind doua procese distincte. POP - Post Office Protocol - protocolul folosit pentru primirea (recuperarea din reea) de mesaje de e-mail; acesta folosete portul TCP 110. SMTP Simple Mail Transfer Protocol protocol care este folosit la transmiterea de mesaje de e-mail i a ataamentelor. Acest protocol folosete portul TCP 25. Spamming presupune trimiterea de spam, adica mesaje nesolicitate, de cele mai multe ori comerciale. SQLite un limbaj Structured Query Language procedural bazat pe limbajul neprocedural standardizat SQL, folosit de catre sistemul de operare Android XML - eXtensible Markup Language

6.

Bibliografie

Cisco CCNA Exploration Modulul 1 http://computer.howstuffworks.com/e-mail-messaging/email.htm http://en.wikipedia.org/wiki/Email_client http://www.vogella.com/articles/Android/article.html http://android.rosedu.org http://www.learn-android.com/ http://www.e-learn.ro http://www.warriorpoint.com/blog/2009/05/24/android-how-to-switch-between-activities/

21

S-ar putea să vă placă și