2014-09-27 21 views
9

Sto pianificando di utilizzare GreenDAO nel mio progetto. L'avevo già testato creando un progetto di test. Tuttavia, ho un paio di requisiti, che devo soddisfare.Utilizzo di DAO verde con provider di contenuti

  1. Il database della mia app sarà crittografato. Per fare ciò, stiamo pianificando di utilizzare SQLCipher. Ho trovato questo link. Lo sto studiando, ma sono interessato a sapere che c'è qualcosa disponibile nel progetto originale GreenDAO.

  2. Come la mia app sarà sincronizzare i dati da/per il server, userò SyncAdapter come io non voglio fare tutto da solo heavylifting che è già stato fatto dal framework Android. Ma richiede Content Provider con cui lavorare. Quindi, come posso utilizzare GreenDAO con Content Provider.

Aggiornamento 2

Il mio progetto ha sette entità. Ho usato addContentProvider() sulle entità. E vengono generati sette diversi fornitori di contenuti. C'è un modo per avere tutte le tabelle sqlite in un unico fornitore di contenuti?

+2

Io uso greendao con syncAdapter. Tutto ciò che devi fare è aggiungere .addContentProvider() durante la generazione dell'entità. Sfortunatamente, non ho conoscenza del 1 ° punto. – dominik4142

+0

@ dominik4142 puoi darmi un piccolo aiuto usando i fornitori di contenuti generati con l'adattatore di sincronizzazione? Sto imparando come usare l'adattatore di sincronizzazione. –

risposta

9

Ho un progetto in esecuzione con GreenDao e un fornitore di contenuti. Prima stavo usando ProviGen solo per generare il content provider e interrogare con il content resolver ma poi il progetto si è rivelato molto ampio quindi ho deciso di implementare greenDAO, quello che ho fatto è usare il contentProvider creato in provigen per ottenere il database da esso , quindi ora ho sia contentProvider che provigen collegati allo stesso database. Vi incoraggio a creare il vostro ContentProvider e collegare il vostro daoMaster al database generato con esso. Ecco il pezzo di codice che ho usato nel onCreate Applicazione Classe:

private static DaoSession daoSession; 
public void onCreate(){ 
SQLiteOpenHelper myAppOpenHelper = new ProvigenContentProvider().openHelper(this); //ContentProvider created previously 
SQLiteDatabase db = myAppOpenHelper.getWritableDatabase(); 
DaoMaster daoMaster = new DaoMaster(db); 
daoSession = daoMaster.newSession(); 
} 

dopo che per utilizzare greendao solo:

public DaoSession getDaoSession(){ 
     return daoSession; 
} 

E lì si può avere sia ContentProvider e greenDao. Se non è ancora stato avviato il progetto, creare manualmente il fornitore di contenuti e creare DaoMaster con lo stesso codice qui. Good Luck

+0

Ciao, grazie per la tua risposta. Sto guardando ad esso. Ho un piccolo dubbio. Non sono chiaro cosa devo fare se devo interrogare o inserire usando i metodi 'query e insert 'del fornitore di contenuti – Nitish

+0

Usando il content provider puoi semplicemente' getContentResolver.query (String content_uri, String [] column_names, String where_clause, String [] dove_parametri, ordine stringa); 'in una qualsiasi delle attività o se eseguito in un frammento usa' getActivity' prima, con greendao è più facile devi solo 'myObject = session.getMyDao(). queryBuilder(). where (MyDao.Properties.Id.eq (1)). UniqueOrThrow(); 'puoi ottenere più documenti [qui] (http://developer.android.com/guide/topics/providers/content-provider-basics.html) – Eefret

+0

per il punto 1 usa semplicemente il link che hai postato, non penso che greenDao abbia il supporto nativo per sqlCipher per ora – Eefret