Sie müssen Ihren eigenen Inhaltsanbieter erstellen - mit SQLite als Speichertechnologie. Sie müssen eine Klasse erstellen, die SQLiteOpenHelper
erweitert - Bereitstellung für die onCreate(Database database)
und dort geben Sie die SQL-Abfrage zum Erstellen der Tabelle, wie Sie es wünschen. Zum Beispiel:
public class YourDBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "yourDB.db";
private static final int DATABASE_VERSION = 1;
public YourDBHelper (Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database) {
//here you write the code to create the table as you desire:
String query = "CREATE TABLE MoreContactInfo <your columns def>...";
database.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
//do the upgrade (e.g drop and create table)
}
}
nun den Content-Provider zu implementieren, erweitern Sie die ContentProvider
Klasse: public class YourContentProvider extends ContentProvider
.
Und in der onCreate Rückruf von YourContentProvider
Klasse Sie Ihre SQLite-Helfer instanziiert (dh YourDBHelper
.): Das folgende Beispiel Siehe:
...
private YourDBHelper yourDatabase = null;
@Override
public boolean onCreate() {
yourDatabase = new YourDBHelper(getContext());
return false;
}
Daten einzufügen, können Sie die Insert-Methode wie folgt außer Kraft setzen:
@Override
public Uri insert(Uri uri, ContentValues values) {
//ideally you use URI-Matcher to figure out who to treat the insert
SQLiteDatabase sqlDB = yourDatabase.getWritableDatabase();
long id = sqlDB.insert("<your-table-name-here>", null, values);
return Uri.parse("<your-content-provider-base-uri"> +"/"+id);
}
Ich weiß, dass dies eine Menge Arbeit zu sein scheint, aber ich denke, dass Sie dies tun müssen, um Ihren eigenen Inhaltsanbieter zu haben, der es Ihnen ermöglicht, Daten in Ihrer Android-App standardmäßig zu speichern und abzurufen. Ich habe eine Code-Walk-Through-Präsentation here, wenn Sie interessiert sind.
holen Sie alle Kontakte vom Gerät und speichern Sie es in der Datenbank Ihrer App zusammen mit geänderten Werten –
Das würde bedeuten, dass ich den Inhalt meiner Datenbank dann die Standarddatenbank bekommen muss. Aktualisieren Sie meins, wenn es Unterschiede gibt, und speichern Sie sie nach dem Herunterfahren. Wäre das nicht langsam? – Ukubu
Nein zu Beginn Ihrer App erhalten Sie alle Kontakte und speichern Sie sie in der App-Datenbank. Fragen Sie nicht immer die Datenbank des Telefons ab und nehmen Sie Änderungen in der App-Datenbank vor. –