2014-09-27 6 views
9

Ich plane, GreenDAO in meinem Projekt zu verwenden. Ich habe es bereits getestet, indem ich ein Testprojekt erstellt habe. Ich habe jedoch einige Anforderungen, die ich erfüllen muss.Verwenden von Green DAO mit Inhaltsanbieter

  1. Datenbank meiner App wird verschlüsselt werden. Um dies zu tun, planen wir, SQLCipher zu verwenden. Ich habe dieses link gefunden. Ich studiere es, bin aber interessiert zu wissen, ob im ursprünglichen GreenDAO-Projekt etwas vorhanden ist.

  2. Da meine App Daten zum/vom Server synchronisiert, verwende ich SyncAdapter, da ich nicht alle Heavylifting selbst machen möchte, was bereits von Android Framework getan wird. Aber es erfordert Content Provider mit zu arbeiten. Also, wie kann ich GreenDAO mit Content Provider verwenden.

aktualisieren 2

Mein Projekt hat sieben Einheiten. Ich habe addContentProvider() über Entitäten verwendet. Und sieben verschiedene Inhaltsanbieter werden generiert. Gibt es eine Möglichkeit, alle SQLite-Tabellen in einem einzigen Inhaltsanbieter zu haben?

+2

Ich benutze greundao mit syncAdapter. Sie müssen lediglich .addContentProvider() hinzufügen, während Sie die Entity generieren. Unglücklicherweise habe ich keine Kenntnisse über den ersten Punkt. – dominik4142

+0

@ dominik4142 können Sie mir ein wenig Hilfe geben mit den generierten Content-Providern mit dem Sync-Adapter? Ich lerne, wie man den Synchronisierungsadapter benutzt. –

Antwort

9

Ich habe ein Projekt läuft mit greenDao und einem Content-Provider. Zuerst habe ich ProviGen nur verwendet, um den Inhaltsanbieter zu generieren und mit dem Inhaltsresolver abzufragen, aber dann wurde das Projekt sehr groß, also entschied ich mich, greenDAO zu implementieren, was ich tat, den in provigen erstellten contentProvider zu verwenden, um die Datenbank daraus zu holen , jetzt habe ich sowohl contentProvider als auch provigen an dieselbe Datenbank angehängt. Ich ermutige Sie, Ihren ContentProvider zu erstellen und Ihren daoMaster an die damit erzeugte Datenbank anzuhängen. Hier ist das Stück Code, den ich in der onCreate Anwendungsklasse verwendet:

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(); 
} 

danach verwenden greendao gerade:

public DaoSession getDaoSession(){ 
     return daoSession; 
} 

Und dort kann man beide Contentprovider und greenDao haben. Wenn Sie Ihr Projekt noch nicht gestartet haben, erstellen Sie den Inhaltsanbieter manuell und erstellen Sie den DaoMaster mit demselben Code hier. Viel Glück

+0

Hallo, danke für deine Antwort. Ich schaue darauf. Ich habe ein wenig Zweifel. Ich bin nicht klar, was ich tun muss, wenn ich abfragen oder einfügen mit "query and insert" -Methoden des Inhaltsanbieters – Nitish

+0

Mit content Provider können Sie einfach 'getContentResolver.query (String content_uri, String [] column_names, String where_clause, String [] where_parameters, String-Reihenfolge); 'in jeder der Aktivitäten oder wenn in einem Fragment ausgeführt wird, benutze 'getActivity' vorher, mit greendao ist es einfacher, du musst nur' myObject = session.getMyDao(). queryBuilder(). where (MyDao.Properties.Id.eq (1)). UniqueOrThrow(); 'Sie können mehr docus [hier] (http://developer.android.com/guide/topics/providers/content-provider-basics.html) – Eefret

+0

für den Punkt 1 verwenden Sie einfach die link you posted, ich denke nicht, dass greenDao native sqlCipher Unterstützung für jetzt – Eefret