O título resume minha pergunta, mas para elaborar basicamente o que eu quero entender é por que os designers do Android querem que os aplicativos que precisam trabalhar com dados compartilhados usem um provedor de conteúdo em vez de apenas acessar o banco de dados SQLite diretamente?
A única razão pela qual consigo pensar é na segurança, porque certos arquivos podem ser acessados apenas em certos processos e, dessa forma, o Provedor de Conteúdo é o gatekeeper que garante que cada aplicativo tenha os privilégios adequados antes de permitir acesso de leitura e / ou gravação ao arquivo do banco de dados. Essa é a principal razão pela qual o ContentProvider foi criado?
O
ContentProvider
também abstrai a toda a comunicação inter-processo que é necessário para se comunicar com outros aplicativos de terceiros. Ter que escrever esse código você mesmo seria uma grande dor.fonte
O ContentProvider também é uma abstração que oculta os detalhes de como os dados são armazenados / gerados. Por exemplo, em um dos meus aplicativos, tenho um provedor de conteúdo que retorna imagens PNG. Essas imagens não são armazenadas em nenhum lugar, elas são geradas sob demanda.
fonte