2012-03-29 3 views
1

Я хочу поделиться некоторыми изображениями иконок между двумя приложениями. Я сохранил значки в папке из Приложения 1 и попытался использовать папку из приложения 2. В этот раз я получил некоторую проблему с разрешением. Я не смог добавить разрешение также потому, что он не является корневым устройством.Контент-провайдер и хранилище изображений

Так что теперь я пытаюсь сохранить значки в контент-провайдере. Можно ли сохранять изображения в поставщике контента? Есть ли другой хороший метод для реализации этого? Пожалуйста помоги.

ответ

2

ContentProviders не используются для хранения. Они используются для публичного интерфейса доступа к базе данных либо из разных компонентов приложения, либо из разных приложений, либо на основе разрешений.

Что вы можете сделать, хотя хранить изображения в виде двоичного набора данных (BLOB) в базе данных. Затем используйте поставщика контента с общедоступными разрешениями для запроса изображения и добавления новых изображений в базу данных. Однако, если вы просто пытаетесь сохранить иконки приложений, вы должны просто использовать их в каждом проекте, используя папку res. Не сражайтесь с SDK, если вам это не нужно.

Надеюсь, это укажет вам в правильном направлении. Для получения дополнительной информации просмотрите API ContentResolver и ContentProvider API.

+0

частных статических окончательное Строка DATABASE_CREATE = "создать таблицу" + DATABASE_TABLE + "(_id первичного ключа, автоинкремент," + "иконы BLOb не равно нулю, текстовое имя не равно нулю);"; это запрос создания, который я использую. Это правильно – Kamalone

+0

@Paru это выглядит правильно, хотя вам не нужно + между автоинкрементами. Также я бы использовал кепки для ключевых слов SQL, так как это большинство людей делают. Вы также хотите создать свою базу данных в SQLiteOpenHelper, который будет использоваться в вашем ContentProvider. – jjNford

+0

Да. Это правильно. – Kamalone

0

Если вы сохранили иконки на App1 как ресурсы (вводимый коэффициент), вы можете просто получить доступ к ним, используя имя пакета и зная идентификатор ресурсов или имя (так как это ваше собственное приложение, которое я предполагаю, что вы знаете, это ;-))

Посмотрите на PackageManager.getResourcesForApplication. Чтобы получить доступ к ресурсам по названию, вы можете использовать Resources.getIdentifier.

+0

Я не храню значки в чертеже. Я создаю новую папку с необходимыми значками – Kamalone

Смежные вопросы