Пользовательский ContentProvider для зашифрованного хранилища - PullRequest
2 голосов
/ 22 декабря 2010

У меня есть зашифрованное хранилище (SQLite), и я хотел бы реализовать свой собственный ContentProvider.Предварительное условие:

  • Доступ должен быть предоставлен / возможен только при работах / запуске моего приложения - во всех других случаях доступ должен быть запрещен при возврате пользователю / приложению некоторого интеллектуального сообщения / кода возврата

Итак, вопрос: возможно ли это?Если да, пожалуйста, дайте мне несколько советов, как начать.

Ответы [ 3 ]

1 голос
/ 31 декабря 2010

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

Я не на 100% понимаю, что вы подразумеваете под "только когда работает / запустил мое приложение". К сожалению, у ContentProvider нет простого способа связи с внешним миром: вы не можете привязаться к сервису, отправить намерения, получить объект Application и т. Д. Если ваш ContentProvider работает в том же процессе (и, следовательно, в том же DalvikVM), тогда ваше приложение сможет взаимодействовать друг с другом через общедоступные статические поля и методы, например:

public class MyApp extends Activity {
    /** True when my app is running, can be accessed by anyone in this process */
    public static boolean myAppIsRunning = false;
}

См. http://developer.android.com/guide/topics/manifest/provider-element.html#proc для получения информации об управлении процессом ContentProvider.

Удачи.

1 голос
/ 28 декабря 2010

Я не уверен, что полностью понимаю ваш вопрос, поэтому этот ответ может не сработать для вас.

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

http://developer.android.com/guide/topics/manifest/permission-element.html

0 голосов
/ 29 декабря 2010

Зачем вам нужен ContentProvider?Основная цель контент-провайдеров - обмен данными.Если вы хотите обмениваться данными с другими вашими приложениями, как вы упомянули, возможно, вы могли бы использовать Android Удаленные службы для доступа к данным.Это не такой хороший способ, как с контент-провайдерами, но у меня нет другой идеи с вашим вариантом использования.

...