Пользовательский контент-провайдер для Android? (Изменение образца блокнота) - PullRequest
2 голосов
/ 28 июля 2011

Я пытаюсь узнать, как работает поставщик контента и как он работает.Я попробовал пример приложения для блокнота в Android SDK, и все работает нормально.Я могу создавать новые заметки, сохранять их и редактировать.

Я попытался изменить этого поставщика контента на пользовательскую реализацию.Это работает нормально.Но я не понимаю следующие реализации

1), почему Notepad.java определяется два раза один раз в папке «com.example.android.notepad», а затем в «com.google.provider».

2) Как тип намерения «content: //com.vinod.provider.NotePad/notes» идет в список и «content: //com.vinod.provider.NotePad/notes/2»собирается редактировать деятельность?как это контролируется?

3) в манифесте я вижу тип MIME, например "vnd.android.cursor.dir / vnd.google.note".что означает vnd.android.cursor.dir и vnd.android.cursor.item.А что такое "vnd.google.note"

Может кто-нибудь, пожалуйста, объясните мне эти вопросы.Спасибо за ваше время и помощь.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2013

В новом приложении ADT 21.1 NotePad: ADT-пачка окно-x86_64 \ SDK \ Samples \ андроид-17_1 \ NotePad Похоже, что папка com.google.provider больше не используется, поэтому в папке «com.example.android.notepad» есть только один файл Notepad.java.

0 голосов
/ 29 июля 2011

1) Два файла

Это два разных класса - com.example.android.notepad - это класс, который реализует приложение.com.google.provider.notepad - это класс, который реализует ContentProvider.

Приложение предоставляет интерфейс пользователя, ContentProvider обеспечивает хранение данных.

Просмотр Эта ссылка на БлокнотПример ContentProvider , его имя намного понятнее.


2) URI Matching

Ссылка NotepadProvider.java :

  sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
  sUriMatcher.addURI(NotePad.AUTHORITY, "notes", NOTES);
  sUriMatcher.addURI(NotePad.AUTHORITY, "notes/#", NOTE_ID);

UriMatcher берет список шаблонов.NotePad.AUTHORITY является базой URI контента.

"notes" - это один шаблон для сопоставления, и возвращается перечисление NOTES."notes/#" - это один шаблон для сопоставления, и возвращается enum NOTE_ID.

switch (sUriMatcher.match(uri)) {
case NOTES:
   ...
   break;

case NOTES:
   ...
   break;

default:
   ...
   break;
}

Шаблон для принятия решения о запуске другого кода на основе URI


3) MIME-типы

MIME-типы являются опциональными.Вам, вероятно, не нужно ничего делать с ними.

...