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

Slides:



Advertisements
Podobne prezentacje
Indeksy w bazie danych Oracle
Advertisements

C++ wykład 2 ( ) Klasy i obiekty.
C++ wykład 4 ( ) Przeciążanie operatorów.
Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Wzorce.
Generics w .NET 2.0 Łukasz Rzeszot.
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
PHP + MySQL część II.
Komponenty bazy danych Baza danych Jest to uporządkowany zbiór powiązanych ze sobą danych charakterystycznych dla pewnej klasy obiektów lub zdarzeń,
MS Access 2003 Kwerendy Paweł Górczyński.
25/08/ Bazy danych II Piotr Górczyński MS Access – Action Query.
SIECI KOMPUTEROWE (SieKom) PIOTR MAJCHER WYŻSZA SZKOŁA ZARZĄDZANIA I MARKETINGU W SOCHACZEWIE Zarządzanie.
Inżynieria oprogramowania Lecture XXX JavaTM – część IV: IO
Podstawy informatyki Wirtotechnologia – Wskaźniki i referencje
Tablice Informatyka Cele lekcji: Wiadomości: Uczeń potrafi:
Bezpieczeństwo Procedury składowane Funkcje i Wyzwalacze
C++ wykład 2 ( ) Klasy i obiekty.
Wykład 1: Wskaźniki Podstawy programowania Programowanie w C
Programowanie wizualne PW – LAB5 Wojciech Pieprzyca.
Modele baz danych - spojrzenie na poziom fizyczny
Język SQL (Structured Query Language) DDL (Data Definition Language)
PROJEKTOWANIE TABEL W PROGRAMIE: ACCESS
Tworzenie nowych kont lokalnych i domenowych, oraz zarządzanie nimi
Instrukcje: CREATE, INSERT, UPDATE, DELETE, DROP
dr hab. Ryszard Walkowiak prof. nadzw.
Kontakt: Adam Jarus tel
System raportowania, ewaluacji oraz badania satysfakcji Klienta.
Bazy danych.
SQL - Structured Query Language
Andrzej Repak Nr albumu
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Rozwiązanie zadań do zaliczenia I0G1S4 // indeks
Wybrane zagadnienia relacyjnych baz danych
Komendy SQL do pracy z tabelami i bazami
Zawansowane techniki programistyczne
Bazy danych Microsoft access 2007.
Naciśnij SPACJĘ aby przejść dalej
1 Strumienie Hierarchie klas strumieniowych, strumienie bajtowe - klasy InputStream i OutputStream i ich metody, klasa File, strumienie plikowe, strumienie.
PL/SQL – dalsza wędrówka
Projektowanie stron WWW
Kurs języka C++ – wykład 4 ( )
Autor: Damian Urbańczyk
Kolumny, tabulatory, tabele, sortowanie
1. Logowanie z usługą Active Directory. a) logowanie do domeny Windows 2003 Server odbywa się znacznie szybciej niż w poprzednich wersjach. b) nie ma odwołania.
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Jak wykonać prosty licznik odwiedzin strony internetowej?
Komendy SQL do pracy z danymi
Informatyka Stosowana – ROK II / III
Paweł Starzyk Obiektowe metody projektowania systemów
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Łukasz Bieszczad Mateusz Gałązka Karol Włodarek
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
Wykład 5 Klasa Vec i jej operatory 1.Kategorie operatorów 2.Operatory ogólne - przykłady 3.Operatory specjalne [ ], ( ) oraz –> 4.Operatory new i delete.
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
Filtrowanie, Funkcje bazodanowe
ASP.NET Kontrolki źródła danych i prezentacji danych w ASP.Net
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Excel 2007 dla średniozaawansowanych Zajęcia z Prowadzący: Artur Kołos.
Temat: Tworzenie bazy danych
Menu Opcje.
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
T. 18. E Proces DGA - Działania (operatorka).
Programowanie Obiektowe – Wykład 2
Strukturalny język zapytań SQL - historia
PGO Interfejsy Michail Mokkas.
Technologie Informacyjne Bazy danych
PGO Przeciążanie metod i konstruktorów
Modele baz danych - spojrzenie na poziom fizyczny
Zapis prezentacji:

Android - Kontakty Łukasz Dudziński

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

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

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

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

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

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

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ń

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

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

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”

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

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

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);

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

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

Dodawanie innych danych Wszystkie dane dodajemy do „tabeli” Data Także te specjalne, mające własne ContentUri – Phone, 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)

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: "); Intent it = new Intent(Intent.ACTION_DIAL, uri); startActivity(it);

Intencje Dzwonienie – Uri / tel: ACTION_DIAL / ACTION_CALL Wyświetlenie kontaktu – Uri + ACTION_VIEW Sms – smsto: ACTION_SENDTO – + ACTION_SENDTO Trzeba mieć uprawnienia!!!

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

Bibliografia oid/provider/ContactsContract.html oid/provider/ContactsContract.html es/contacts.html es/contacts.html oviders/content-providers.html oviders/content-providers.html