Уроци за Android за начинаещи Част-4: Доставчик на съдържание



Този урок за Android обсъжда концепции за доставчик на съдържание. Това е важен градивен елемент на Android, улесняващ обмена на данни в системата Android.

В предишните ни уроци за Android за начинаещи обсъдихме първите три изграждащи блока на Android: Дейност , Намерение и Услуги . Тази статия е четвърта в тази серия уроци за Android за начинаещи и обсъжда доставчика на съдържание, който е друг много важен компонент на системата Android.

Доставчикът на съдържание е посредник на вашата система Android, улесняващ обмена на данни между различни приложения за Android. Нека да влезем малко в подробностите за това в този урок за Android.





Урок за Android за начинаещи-4 Бонус: Изтеглете кода на доставчика на съдържание тук . Бихте искали този код, след като преминете през урока! :)

[dl url = ”#” class = ”eModal eModal-6 ″ title =” Код за изтегляне ”desc =” ”type =” ”align =” ”for =” download ”]



Уроци за Android: Доставчик на съдържание

Доставчикът на съдържание улеснява достъпа до централно хранилище или склад за данни, за да позволи споделяне на данни и манипулиране на данни в различни приложения.

Ето няколко примера за доставчици на съдържание по подразбиране в API на системата на Android:

Уроци за Android: Доставчици на съдържание по подразбиране в системата Android



Тези доставчици на съдържание позволяват на потребителя абстракция от базисна база данни. Като цяло доставчиците на съдържание използват SQLite за съхраняване на основната база данни.

Нека вземем вечно полезния пример за доброто старо приложение на Facebook, което ни помогна да опростим нещата и в предишните уроци за Android!

Всички вие сте в някакъв момент от живота си в социалните мрежи качили снимка на вашата хронология във Facebook, нали! Как го правиш?

След като щракнете върху бутона за снимка на стената, стигате до фотогалерията. От там можете да изберете снимка за качване.

След като прочетох предишните статии на Серия уроци за Android , вие знаете за дейности и намерения, следователно знаете, че това се случва:

Вашата Facebook стена е „ДЕЙНОСТ“. Когато щракнете върху бутона за снимка, се предава „НАМЕРЕНИЕ“, което предава съобщението и се отваря „ДОСТАВЧИК НА СЪДЪРЖАНИЕ“ (Фотогалерия). Снимката се качва с помощта на мрежово качване „SERVICE”.

конвертира двойно в цяло число в java

Гледайте това видео на живо, за да разберете как Доставчикът на съдържание работи във вашето Facebook приложение.

Защо системата Android се нуждае от доставчици на съдържание?

Необходимостта от доставчици на съдържание възниква, защото базата данни, създадена в едно приложение, не се вижда от второ приложение.

Лесно е да създавате и съхранявате база данни в различни приложения, използвайки SQLite, но проблемът е в това, база данни в Android е частна за приложението, което я създава . В Android няма обща област за съхранение, до която всяко приложение да има достъп. Следователно, за да могат различни приложения да използват база данни, системата Android се нуждае от интерфейс, който позволява такъв обмен на данни между приложения и между процеси. Тук идва доставчикът на съдържание да играе.

Наистина ли се нуждая от доставчик на съдържание?

1) Вие не е необходимо да разработвате свой собствен доставчик, ако искате частна база данни за конкретно приложение (тази база данни няма да бъде достъпна за приложения, различни от тази, която я е създала).

2) Вие обаче се нуждаете от персонализиран доставчик, който да предоставя предложения за персонализирано търсене във вашата собствена система за кандидатстване.

3) Ще ви е необходим и доставчик на съдържание за да копирате и поставяте сложни данни от вашето приложение в други приложения.

Какви са операциите, поддържани от доставчик на съдържание?

Доставчиците на съдържание поддържат следните основни операции:

един) Запитване: Запитва доставчика на съдържание за всички обекти въз основа на посочения URI.

2) Изтрий: Изтрива посочените обекти от базата данни на доставчик на съдържание.

3) Актуализация: Прави актуализации на обектите в базата данни.

4) Вмъкване: Вмъква нов обект в базата данни.

Стъпки за извършване на операция в доставчика на съдържание

Стъпка 1: Достъп до доставчик на съдържание

Клиентски обект ContentResolver се използва за достъп до данни от доставчика на съдържание. Той комуникира с обект на доставчик, който от своя страна приема заявката за достъп до данни и връща желаните резултати. Интерфейсът за обмен на данни, предоставен от доставчика и клиентския обект на доставчика, позволява комуникация между различни процеси / приложения.

Приложението, което трябва да осъществи достъп до базата данни, трябва да декларира това и да поиска разрешения в своя файл на манифеста. Това ще бъде обсъдено подробно в следващите ни уроци за Android.

URI на съдържанието

URI на съдържанието е един от аргументите, използвани за идентифициране на данните в доставчик. Той има четири части:

един) Схема: Схемата за доставчик на съдържание има постоянна стойност: „съдържание“.

2) Власт: Това е символичното име на доставчика и е уникално за всеки един. Ето как открояваме желания доставчик на съдържание от списък с толкова много.

3) Път: Път помага да се разграничат необходимите данни от пълната база данни . Например доставчикът на съдържание на регистъра на повикванията прави разлика между пропуснати повиквания, получени повиквания и т.н., използвайки различни пътища.

4) ДОКУМЕНТ ЗА САМОЛИЧНОСТ: Той не е задължителен компонент и може да не присъства в URI, но ако присъства, трябва да е цифров. Например, ако искате да осъществите достъп до определен музикален файл от вашия доставчик на медийно съдържание, бихте посочили и идентификатор .

Процеса

Използвайки правото на доставчика, ContentResolver идентифицира правилния доставчик на съдържание (тъй като органът е уникален за всеки доставчик на съдържание). След това компонентът на пътя на URI се използва за избор на правилната (поискана) таблица с данни. В случай че има идентификационен номер, доставчикът ще знае какви точно данни се искат.

URI са два вида:

Освен това URI могат да имат и ограничаваща информация.

Стъпка 2: Как да извлечете данни от доставчик на съдържание

Въпреки че ContentResolver вече има достъп до таблицата с данни, той не може да извлече необходимите данни, освен ако приложението няма „Разрешение за четене на достъп“ за този конкретен доставчик. Това разрешение е дефинирано в файла на манифеста на всеки доставчик на съдържание.

Всичко това приложение (който иска достъп до тази база данни) трябва да поискате това разрешение.

Както беше обсъдено по-рано в този урок за Android, четири операции могат да бъдат извършени с помощта на доставчик на съдържание . Ще прегледаме всеки един по един.

ЗАПИТВАНЕ

Сега имате достъп до доставчика и имате разрешение за извличане на данни от него. Следващата стъпка е да изградете заявката, за да поискате необходимото действие от доставчика .

Ето аргументите, използвани при заявка:

един) МРАЗА : Работи точно както е обяснено по-горе.

2) Проекция: Заявката трябва връща набор от колони от цялата таблица на базата данни . Това е известно като проекция. Предаването на null ще върне всички колони, което е неефективно.

3) Клауза за избор: ДА СЕ филтър, деклариращ кои редове да се върнат , форматиран като клауза SQL WHERE (с изключение на самата WHERE). Предаването на null ще върне всички редове за дадения URI.

Например, ако въведете азбука (кажете „P“) в колоната за търсене на вашата адресна книга, тя ще върне всички данни за контакт, започвайки с „P“. Ако обаче не въведете нищо в лентата за търсене, се извлича пълният списък с контакти (клаузата за избор е настроена на ‘null’ в такива случаи).

4) Аргумент за подбор: Можете да включите “? S” в селекцията, която ще бъде заменена от стойностите от selectionArgs, в реда, в който се появяват в селекцията.

5) Поръчка за сортиране: Клауза SQL ORDER BY (с изключение на самата ORDER BY). Предаването на null ще извлече резултатите, които може да са неподредени.

КОДЕН ПРИМЕР за заявки:

  • Търсене на телефонни номера в Контакти
Курсор на курсора = contentresolver.query (ContactsContract.Contacts.CONTENT_URI, null, null, null, null) int count = cursor.getCount () if (count> 0) {String contactDetails = '' while (cursor.moveToNext ()) { String columnId = ContactsContract.Contacts._ID int cursorIndex = cursor.getColumnIndex (columnId) String id = cursor.getString (cursorIndex) Име на низа = cursor.getString (cursor .getColumnIndex (ContactsContract.Contacts.DISPLAY_NAMEContacts.DISPLAY_NAMEContacts.DISPLAY_NAME (cursor.getString (cursor .getColumnIndex (ContactsContract.Contacts.HAS_PHONE_NUMBER)))) if (numCount> 0) {Cursor phoneCursor = contentresolver.query (ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, CommonDataKOND. , нов String [] {id}, null) while (phoneCursor.moveToNext ()) {String phoneNo = phoneCursor.getString (phoneCursor .getColumnIndex (ContactsContract.CommonDataKinds. Phone.NUMBER)) contactDetails + = 'Name:' + name + ', Телефонен номер:' + phoneNo + ''} phoneCursor.close ()}}}

ВЪВЕЖДАНЕ

Да предположим, че искате да вмъкнете нови контакти в адресната си книга. Обект ContentValues се използва за извършване на тези вмъквания. Ключовете за обект ContentValue и колоните на доставчика на съдържание трябва да съвпадат, за да се постигне това. Ето пример за това:

ПРИМЕР ЗА КОД ЗА Вмъкване:

  • Операцията е да се вмъкне нов запис с име „Rajnikant” и номер „9988999888”
// Операция ArrayList ops = new ArrayList () int rawContactInsertIndex = ops.size () ops.add (ContentProviderOperation.newInsert (RawContacts.CONTENT_URI) .withValue (RawContacts.ACCOUNT_TYPE, nualtacts. ()) ops.add (ContentProviderOperation .newInsert (Data.CONTENT_URI) .withValueBackReference (Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (Data.MIMETYPE, StructuredName.CONTENT_ITEM_TVame.D. ) ops.add (ContentProviderOperation.newInsert (Data.CONTENT_URI) .withValueBackReference (Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) .withV88, VUEV88, V8 , Phone.TYPE_MOBILE) .build ()) getContentResolver (). ApplyBatch (ContactsContract.AUTHORITY, ops)

АКТУАЛИЗИРАНЕ

За актуализиране на доставчик на съдържание се използват следните аргументи:

един) МРАЗА: URI на доставчика на съдържание

2) Стойности на съдържанието: Това съдържа стойностите, които биха заменили съществуващите данни.

3) Клауза за избор: Това може да помогне за избора на конкретните записи за актуализиране

4) Аргумент за подбор: Можете да включите “? S” в селекцията, която ще бъде заменена от стойностите от selectionArgs, в реда, в който се появяват в селекцията.

Още веднъж, ключовете на обекта ContentValues ​​трябва да съвпадат с колоните в доставчика на съдържание в противен случай актуализацията няма да се случи.

ПРИМЕР ЗА КОД ЗА Актуализация:

  • Актуализиране на телефонния номер, където името е „Rajnikant“
Низ къде = ContactsContract.Data.DISPLAY_NAME + '=? 'String [] params = new String [] {“Rajnikant”} ArrayList ops = new ArrayList () ops.add (ContentProviderOperation.newUpdate (ContactsContract.Data.CONTENT_URI) .withSelection (където, params) .withValue (ContactsContract.Com. Phone.NUMBER, “9876543210”) .build ()) getContentResolver (). ApplyBatch (ContactsContract.AUTHORITY, ops)

ИЗТРИВАНЕ

Изтриването използва същите аргументи като update, с изключение на аргумента ContentValues, който не е задължителен, тъй като няма да има заместени стойности.

ПРИМЕР ЗА КОД ЗА ЗАтриване:

  • Изтрийте контакта, където името е „Rajnikant“
Низ къде = ContactsContract.Data.DISPLAY_NAME + '=? 'String [] params = new String [] {“Rajnikant”} ArrayList ops = new ArrayList () ops.add (ContentProviderOperation.newDelete (ContactsContract.RawContacts.CONTENT_URI) .withSelection (където, params) .build ()) getContent ) .applyBatch (ContactsContract.AUTHORITY, ops)

В случай на операция за вмъкване, URI трябва да бъде базиран на директория. Във всички останали случаи URI могат да бъдат или базирани на идентификатор, или базирани на директория.

Надяваме се Урок за Android за начинаещи: Част 5 не беше твърде трудно да се разбере! Ще обсъдим повече за доставчиците на съдържание в следващите уроци за Android. Приятно изучаване на основите дотогава!

Имате ли съмнения в този урок за Android? Попитай ни.

Честито обучение!

Следните ресурси бяха използвани при създаването на този урок за Android! Официални разработчици на Android , Edureka.in

Може да харесате и тези свързани публикации: