Android - Kontakty. Łukasz Dudzioski



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

Przechowywanie danych

akademia androida Intencje oraz URI część III

Intencje nadawcze. Aktywności mogą rozsyłać komunikaty do wszystkich zainstalowanych aplikacji

akademia androida Składowanie danych część VI

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

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

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

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

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

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

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

SQLite w systemie Android. Własny dostawca treści. Materiał teoretyczny

Wykład 8. SQL praca z tabelami 5

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP).

Kraków, 22 października 2008

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Język SQL, zajęcia nr 1

Backend Administratora

Metody dostępu do danych

Programowanie w języku Java. Bazy danych SQLite w Javie

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Automatyka i Robotyka ROK III TEMAT: TWORZENIE I ZARZĄDZANIE INTERNETOWĄ BAZĄ DANYCH

Programowanie obiektowe

Podstawy technologii WWW

Protokół JDBC współpraca z relacyjnymi bazami danych lab4. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Protokół JDBC współpraca z relacyjnymi bazami danych lab3

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Obsługa SMS i telefonii

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

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:

Programowanie wielowarstwowe i komponentowe

Wykład 05 Bazy danych

Oracle PL/SQL. Paweł Rajba.

Programowanie obiektowe. Dr hab. Inż. Marta Gładysiewicz-Kudrawiec Pokój 229 A1 Operatory new delete pliki-odczyt

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Tworzenie aplikacji bazodanowych w delphi dla dużych baz danych FRAMEWORK IMPET

Oracle11g: Wprowadzenie do SQL

Autor: Joanna Karwowska

Database Connectivity

Monitoring procesów z wykorzystaniem systemu ADONIS. Krok po kroku

Kursory. A. Pankowska 1

Fizyczna struktura bazy danych w SQL Serwerze

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

SQL 4 Structured Query Lenguage

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Programowanie w Ruby

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Programowanie w MS Visual Studio 2005 z wykorzystaniem MS SQL Server 2005

Programowanie obiektowe

4. Projekt Bazy Danych

1 Atrybuty i metody klasowe

Podstawy programowania III WYKŁAD 2

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

Klasy i obiekty cz I Klasy, obiekty, podstawy używania obiektów

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Microsoft SQL Server Podstawy T-SQL

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

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

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Ile rekordów będzie zawierała tabela przy założeniu, że na początku była pusta?

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

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

Wielojęzykowość w aplikacjach J2EE. Tomasz.Skutnik@e-point.pl

Systemy operacyjne na platformach mobilnych

Automaty do zadań specjalnych. Olga Maciaszek-Sharma, Artur Kotow Wersja 1,

Administracja i programowanie pod Microsoft SQL Server 2000

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Fragmenty są wspierane od Androida 1.6

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Programowanie obiektowe

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Baza numerów Wersja 1.1

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Mobilne aplikacje multimedialne

Rozdział 4 KLASY, OBIEKTY, METODY

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Systemy operacyjne na platformach mobilnych

Uprawnienia, role, synonimy

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

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Currenda EPO Instrukcja Konfiguracji. Wersja dokumentu: 1.3

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

SQL (ang. Structured Query Language)

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Programowanie obiektowe

Transkrypt:

Android - Kontakty Łukasz Dudzioski

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 Email, 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 emailowe 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 robid 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 zapytao

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 byd 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. komunikowad się ze zwykłą bazą danych, może czytad dane z pliku xml, czy z pamięci

Zapytania do bazy danych Musimy posiadad obiekt Content Providera Musimy posiadad Uri do konkretnego obiektu, lub do określonego typu danych ContentValues klasa do przekazywanych danych do zapytania przy insert i update Możemy podad opcję Where która jest zwykłym stringiem i wyglądą jak SQL W Where można używad 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ądad bazę danych Ważne metody getcount() zwraca liczbę wierszy getcolumncount() zwraca liczbę kolumn getdouble, getint,, getstring(int columnindex) zwraca wartośd 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 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); Wyszukanie kontaktu Cursor cur = getcontentresolver().query( Contacts.CONTENT_URI, null, Contacts.DISPLAY_NAME + " =?", new String[] { displayname }, null); Usunięcie obiektu getcontentresolver().delete(uri, null, null);

Dodanie kontaktu Nie jest to wcale takie proste Nie można po prostu stworzyd obiektu Contact Kontakt tworzymy na podstawie Display Name, który jest obowiązkowym argumentem Musimy najpierw stworzyd 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, Email Obowiązkowe jest podane RawContactId, nie można podad ContactId, bo dane powiązane są z konkretnym RawContact, wyjątek to Starred (Ulubione) i Photo (Zdjęcie)

Intencje przypomnienie Uri uri = Uri.parse("tel:2342343"); Intent it = new Intent(Intent.ACTION_DIAL, uri); startactivity(it); 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(); } }

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 mied 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 http://stackoverflow.com/ http://developer.android.com/reference/andr oid/provider/contactscontract.html http://developer.android.com/resources/articl es/contacts.html http://developer.android.com/guide/topics/pr oviders/content-providers.html http://snipt.net/martin/android-intent-usage/