Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Android - Kontakty Łukasz Dudziński. Kontakty informacje Oparte na androidowej bazie danych „Contact API” zarządzany dostęp do bazy danych Niskopoziomowy.

Podobne prezentacje


Prezentacja na temat: "Android - Kontakty Łukasz Dudziński. Kontakty informacje Oparte na androidowej bazie danych „Contact API” zarządzany dostęp do bazy danych Niskopoziomowy."— Zapis prezentacji:

1 Android - Kontakty Łukasz Dudziński

2 Kontakty informacje Oparte na androidowej bazie danych „Contact API” zarządzany dostęp do bazy danych Niskopoziomowy dostęp Duża zmiana od wersji 2.0

3 Schemat bazy danych wersja 1.x Deprecated !!! Pakiet Contacts Główne klasy – People – Phones – Photos – Organizations

4 Schemat bazy danych wersja >2.0 Pakiet ContactsContract Główne klasy danych – Contact, RawContact, Data „Projekcje” – CommonDataKinds – Email, Event, Im, Nickname, Note, Organization, Phone, Photo, Relation, StructuredName, StructuredPostal, Website Stare klasy działają, ale są deprecated

5 Schemat bazy danych wersja >2.0 Trzy „Tabele” – Contact – RawContact – Data

6 Inne dane Grupy - ContactsContract.Group Konta emailowe – Account Z kontami powiązane są – ContactsContract.RawContact – Ustawienia - ContactsContract.Settings Tabela PhoneLookup do szybkiego znajdywania numerów Status komunikatorów StatusUpdates

7 Używanie ContactAPI Klasy to po prostu zbiory stałych Udostępniają ponadto kilka statycznych metod – Do zamiany typu na tekst getTypeLabel, getTypeLabelResource – Do wspomagania wyszukiwania getContactLookupUri, getLookupUri, lookupContact – Klasa Contact markAsContacted openContactPhotoInputStream

8 Używanie ContactAPI cd. Z powodu braku specjalnych klas i metod do zarządzania kontaktami wszystko trzeba robić ręcznie Używamy do tego standardowego mechanizmu dostępu do bazy danych wbudowanego w Androida Stałe z klas przydają się jako parametry do zapytań

9 Słówko o bazie danych - URI Wszystkie obiekty bazy mają swój URI A – Standardowy prefix mówiący o tym, że dane kontrolowane są przez Content Providera B – Identyfikator Content Providera C – Identyfikuje typ danych D – Identyfikator wiersza danych

10 Baza danych – Content Provider Content Provider to po prostu klasa rozszerzająca klasę ContentProvider i implementująca metody – query, insert, update, delete, getType, onCreate Gdy jest to nasza własna klasa, w Uri musi być podana pełna nazwa klasy np. pl.umk.luk.conPro To co klasa robi zależy tylko i wyłącznie od twórcy, może np. komunikować się ze zwykłą bazą danych, może czytać dane z pliku xml, czy z pamięci

11 Zapytania do bazy danych Musimy posiadać obiekt Content Providera Musimy posiadać Uri do konkretnego obiektu, lub do określonego typu danych ContentValues – klasa do przekazywanych danych do zapytania przy insert i update Możemy podać opcję „Where” która jest zwykłym stringiem i wyglądą jak SQL W „Where” można używać znaków ?, które będą później zastąpione przez „WhereArgs”

12 Zapytania do bazy danych Wywołujemy na Content Providera jedną z metod – Uri insert(Uri uri, ContentValues values) zwraca Uri nowoutworzonego obiektu – int delete(Uri uri, String selection, String[] selectionArgs) zwraca liczbę usuniętych wierszy – int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) zwraca liczbę zaktualizowanych wierszy – Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) Podajemy w projection wybrane kolumny, a także porządek sortowania w sortOrder, zwraca obiekt Cursor

13 Cursor Klasa, dzięki której możemy przeglądać bazę danych Ważne metody – getCount() – zwraca liczbę wierszy – getColumnCount() – zwraca liczbę kolumn – getDouble, getInt, …, getString(int columnIndex) – zwraca wartość komórki z podanej kolumny – getColumnIndex(String columnName) – zwraca indeks kolumny – moveToFirst(), moveToLast(), moveToNext(), moveToPrevious() – przesuwanie na wybrany wiersz, zwraca boolean, czyli idealne do while, czy if – close() – zalecane używanie

14 Przykładowe zapytanie Dodanie notatki do kontaktu Wyszukanie kontaktu Usunięcie obiektu ContentValues values = new ContentValues(); values.put(Data.RAW_CONTACT_ID, rawContactId); values.put(Data.MIMETYPE, CommonDataKinds.Note.CONTENT_ITEM_TYPE); values.put(CommonDataKinds.Note.NOTE, data); getContentResolver().insert(Data.CONTENT_URI, values); getContentResolver().delete(uri, null, null); Cursor cur = getContentResolver().query( Contacts.CONTENT_URI, null, Contacts.DISPLAY_NAME + " = ?", new String[] { displayName }, null);

15 Dodanie kontaktu Nie jest to wcale takie proste Nie można po prostu stworzyć obiektu Contact Kontakt tworzymy na podstawie „Display Name”, który jest obowiązkowym argumentem Musimy najpierw stworzyć RawContact Dopiero w tym momencie tworzony jest automatycznie obiekt Contact

16 Dodanie kontaktu cd. Następnie tworzymy podstawowy obiekt zawierający informacje o nazwie (StructuredName) Niedodanie StructuredName powoduje błędy Dodanie kolejnego RawContact o tym samej „Display Name” nie tworzy nowego kontaktu, tylko dodaje kolejny RawContact do istniejącego już Contact

17 Dodawanie innych danych Wszystkie dane dodajemy do „tabeli” Data Także te specjalne, mające własne ContentUri – Phone, Email Obowiązkowe jest podane RawContactId, nie można podać ContactId, bo dane powiązane są z konkretnym RawContact, wyjątek to Starred (Ulubione) i Photo (Zdjęcie)

18 Intencje przypomnienie static final int PICK_CONTACT = 123; Intent it = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(it, PICK_CONTACT); void onActivityResult(int reqCode, int resultCode, Intent data) { if(reqCode == PICK_CONTACT && resultCode == Activity.RESULT_OK) { Uri contactData = data.getData(); } Uri uri = Uri.parse("tel:2342343"); Intent it = new Intent(Intent.ACTION_DIAL, uri); startActivity(it);

19 Intencje Dzwonienie – Uri / tel:646432528 + ACTION_DIAL / ACTION_CALL Wyświetlenie kontaktu – Uri + ACTION_VIEW Sms – smsto:646432528 + ACTION_SENDTO Email – mailto:zxc@abc.com + ACTION_SENDTO Trzeba mieć uprawnienia!!!

20 Obiektowa nakładka Brak takowej w SDK Androida Stworzyłem własną Demo w postaci managera kontaktów podobnego do systemowego, ale umożliwiającego edycję wszystkich danych

21 Bibliografia http://stackoverflow.com/ http://developer.android.com/reference/andr oid/provider/ContactsContract.html http://developer.android.com/reference/andr oid/provider/ContactsContract.html http://developer.android.com/resources/articl es/contacts.html http://developer.android.com/resources/articl es/contacts.html http://developer.android.com/guide/topics/pr oviders/content-providers.html http://developer.android.com/guide/topics/pr oviders/content-providers.html http://snipt.net/Martin/android-intent-usage/


Pobierz ppt "Android - Kontakty Łukasz Dudziński. Kontakty informacje Oparte na androidowej bazie danych „Contact API” zarządzany dostęp do bazy danych Niskopoziomowy."

Podobne prezentacje


Reklamy Google