P
pyretta
Ambitioniertes Mitglied
- 1
Hallo,
hier mal meine Ausgangssituation/Entwicklungsumgebung: Eclipse Standard/SDK Luna Release (4.4.0), Android SDK Tools 23.0.2, PhoneGap 2.5.
Ich versuche eine vorgefertigte Datenbank an den "richtigen" Speicherort zu kopieren. Für alle Android Versionen < 4.4 funktioniert das auch wunderbar. Ab 4.4 findet die App die Datenbank nicht mehr - folglich muss sich etwas an der Verzeichnisstruktur geändert haben.
Code innerhalb "onCreate":
Hier der Code für das eigentliche kopieren:
Ich habe schon folgende Verzeichnispfade ausprobiert, bisher ohne Erfolg:
für die "Strukturdatei" Databases.db:
data/data/packagename/app_webview/databases/
data/data/packagename/app_database/
data/data/packagename/databases/
für die eigentliche Datenbank "0000000000000001.db":
data/data/packagename/app_webview/databases/file__0/
data/data/packagename/app_database/file__0/
data/data/packagename/databases/file__0/
Wie lautet denn nun der korrekte Verzeichnispfad für Android 4.4.x?
Oder liegt es vielleicht gar nicht an der Java Klasse, sondern eher an PhoneGap 2.5? Verweist PhoneGap 2.5 standardmäßig auf ein bestimmtes Verzeichnis für die Datenbank? Kann ich das dort auch Versionsabhängig ändern? Wenn ja, wie?
Ich habe schon reichlich viele Lösungsvorschläge über stackoverflow gefunden und auch ausprobiert, aber leider brachte mir das alles nichts. Der Fehler bleibt bestehen. Zum Beispiel: javascript - SQLLite database not working in Android 4.4 - Stack Overflow
Vielleicht hat ja jemand ein ähnliches Problem bereits lösen können?
Würde mich freuen über jeglichen Input.
Vielen Dank.
hier mal meine Ausgangssituation/Entwicklungsumgebung: Eclipse Standard/SDK Luna Release (4.4.0), Android SDK Tools 23.0.2, PhoneGap 2.5.
Ich versuche eine vorgefertigte Datenbank an den "richtigen" Speicherort zu kopieren. Für alle Android Versionen < 4.4 funktioniert das auch wunderbar. Ab 4.4 findet die App die Datenbank nicht mehr - folglich muss sich etwas an der Verzeichnisstruktur geändert haben.
Code innerhalb "onCreate":
Code:
/** Kopieren der schon existierenden Datenbank - nur EINMAL beim ERSTEN Start der App nach der Installation **/
boolean firstrun = getSharedPreferences("PREFERENCE_1", MODE_PRIVATE).getBoolean("firstrun", true);
if (firstrun){
//Use this code in your bootstrapping steps like in onCreate()
try{
String pName = this.getClass().getPackage().getName(); //output: packagename
String appInfo = getApplicationInfo().dataDir; //output: /data/data/packagename
if(android.os.Build.VERSION.SDK_INT >= 19){
this.copy("Databases.db", appInfo +"/databases/");
this.copy("0000000000000001.db", appInfo +"/databases/file__0/");
}else{
this.copy("Databases.db", appInfo +"/app_database/");
this.copy("0000000000000001.db", appInfo +"/app_database/file__0/");
}
}
catch (IOException e)
{
e.printStackTrace();
}
getSharedPreferences("PREFERENCE_1", MODE_PRIVATE)
.edit()
.putBoolean("firstrun", false)
.commit();
}
Hier der Code für das eigentliche kopieren:
Code:
void copy(String file, String folder) throws IOException
{
File CheckDirectory;
CheckDirectory = new File(folder);
if (!CheckDirectory.exists())
{
CheckDirectory.mkdir();
}
InputStream in = getApplicationContext().getAssets().open(file);
OutputStream out = new FileOutputStream(folder+file);
byte[] buf = new byte[1024];
int len; while ((len = in.read(buf)) > 0) out.write(buf, 0, len);
in.close(); out.close();
}
Ich habe schon folgende Verzeichnispfade ausprobiert, bisher ohne Erfolg:
für die "Strukturdatei" Databases.db:
data/data/packagename/app_webview/databases/
data/data/packagename/app_database/
data/data/packagename/databases/
für die eigentliche Datenbank "0000000000000001.db":
data/data/packagename/app_webview/databases/file__0/
data/data/packagename/app_database/file__0/
data/data/packagename/databases/file__0/
Wie lautet denn nun der korrekte Verzeichnispfad für Android 4.4.x?
Oder liegt es vielleicht gar nicht an der Java Klasse, sondern eher an PhoneGap 2.5? Verweist PhoneGap 2.5 standardmäßig auf ein bestimmtes Verzeichnis für die Datenbank? Kann ich das dort auch Versionsabhängig ändern? Wenn ja, wie?
Ich habe schon reichlich viele Lösungsvorschläge über stackoverflow gefunden und auch ausprobiert, aber leider brachte mir das alles nichts. Der Fehler bleibt bestehen. Zum Beispiel: javascript - SQLLite database not working in Android 4.4 - Stack Overflow
Vielleicht hat ja jemand ein ähnliches Problem bereits lösen können?
Würde mich freuen über jeglichen Input.
Vielen Dank.