Я сам на самом деле не использовал ContentProviders, но, глядя на документы, я предполагаю, что корень проблемы в том, что вы сами не создаете экземпляр ContentProvider, а в Android, когда это необходимо для обработки запроса.
Если вы хотите, чтобы имя базы данных определялось вашим приложением во время выполнения, вы можете просто использовать общедоступную статическую переменную, которую вы устанавливаете соответствующим образом из другой части вашего приложения. Вы можете ссылаться на это из вашего ContentProvider
.
В качестве альтернативы, если вы хотите, чтобы человек, который запрашивает что-то из ContentProvider
, мог указать базу данных для запроса, то из документов выглядит так, как будто вы можете использовать путь URI запроса для указания базы данных. на запрос.
Структура URI запроса детализирована здесь: http://developer.android.com/guide/topics/providers/content-providers.html#urisum и далее на этой странице написано:
Авторитет - это то, что определяет провайдера, а не путь; ваш провайдер может интерпретировать часть пути URI любым способом, который вы выберете.
Так что в качестве примера я мог бы представить, что вы могли бы использовать URI вида:
content://com.example.yourprovider/DB_REF/ID
Тогда в вашей реализации абстрактных методов ContentProvider
вы могли бы проанализировать URI, чтобы определить используемую БД.
Одно слово предупреждения, хотя - если вы собираетесь использовать этот подход, то я бы предложил не использовать значение, переданное напрямую. Было бы намного лучше использовать какую-то проверку для ограниченного списка, чтобы люди не могли просто запросить любую из ваших баз данных (если они знают свое имя).
Надеюсь, это имеет смысл:)