
Ergebnis 1 bis 7 von 7
-
Bin neu hier
- 21.03.2011, 14:29
- #1
Hallo zusammen
Ich schreibe an einer kleinen App, wo ich Daten in einer SQLite DB mitgebe. Auf dem Emulator hat das wunderbar geklappt, wenn ich das aber auf meine Handy (HTC Desire) machen möchte bekomme ich eine Fehlermeldung.
Wollte dann über adb shell nachschauen, ob die DB auch kopiert wurde. Ich sehe zwar das Verzeichnis /data/data/<mein Package> kann aber nicht darauf zugreifen. 'Permission denied'. genauso wenn ich 'su' eingebe'Permission denied'.
Bin nicht so der Hacker und Linux ist auch nicht meine Welt. Wahrscheinlich hab ich was elementares vergessen. In anderen Foren schreiben sie Sachen wie, zuerst rooten, mounten etc. Kann mir jemand auf die Sprünge helfen?
Danke
Ile
PS: die Einstellungen unter 'Entwickler' habe ich alle zugelassen.
-
- 21.03.2011, 15:06
- #2
Vielleicht solltest du etwas mehr Infos geben
Woher kommt die DB?
Wird sie intern abgefüllt, ist es eine Datei die du in den assets mitlieferst, lädst du sie aus dem Internet...?
Welche Fehlermeldung kommt? Bitte LogCat mit Code-Ausschnitt posten.
-
Bin neu hier
- 21.03.2011, 17:10
- #3
Sorry... Ich dachte das Problem liegt an den Berechtigungen vom Handy und nicht am Code(Im Emulator läuft es ohne Probleme), deshalb die spärlichen Infos.
Die DB wird im assets mitgeliefert.
logcat:
03-21 16:42:16.533: ERROR/Database(268): sqlite3_open_v2("/data/data/<package>/databases/MYDB", &handle, 1, NULL) failed
Das passiert wenn ich prüfen will ob die DB bereits existiert:
private boolean checkDataBase(){
SQLiteDatabase checkDB = null;
try{
String myPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
Log.i(DEBUG_TAG, "checkdatabase1");
}catch(SQLiteException e){
...etc
wie gesagt, über die shell mit dem adb.exe sehe ich den folder '/data/data/<package> wenn ich ls /data/data/* eingebe. in den Folder selber, wo die Datenbank sein sollte komme ich aber nicht, da ich immer 'permission denied' erhalte.
ich vermute a), dass der Fehler passiert weil ich nicht die richtigen Berechtigungen habe oder b) die DB nicht da ist wo sie sein sollte, oder c) die DB ist da, hat aber keine Tabellen oder sowas in der Richtung.
-
- 21.03.2011, 18:15
- #4
Hast du auch noch die Exception? Es muss ja ne bestimmte Exception geben und mit der ist es einiges einfacher herauszufinden was schief läuft.
Andere Frage: kommt es überhaupt bis zum Log-Eintrag? Ich nehme an das "checkdatabase1" wird nicht mehr ausgegeben oder?
-
Bin neu hier
- 21.03.2011, 21:30
- #5
Nein, 'checkdatabase1' kommt nicht. Leider ist es wieder mal soweit, bekomme keine Log und Console Einträge mehr wenn ich das Programm über das HTC laufen lasse.... (hatte ich schon mal, nach etwa 2 Tagen hats dann wieder funktioniert... keine Ahnung was das ist). Sorry, kann dir im Moment nicht sagen wie die Exception lautet. (hatte sie vorher auch nicht ausprogrammiert :/ )
...weisst du oder jemand sonst hier evtl. wie ich die richtigen permissions einstellen kann, damit ich über die adb shell wenigstens mal gucken kann ob die DB überhaupt geladen wurde? Ich vermute das Problem liegt irgendwo da begraben.
-
Bin neu hier
- 26.03.2011, 16:21
- #6
Sorry, hat ein Weilchen gedauert.
Mein Debugger funktioniert in der Zwischenzeit und auch das LogCat ist wieder aufgetaucht (sehr merkwürdig).
Also. Ich prüfe ob meine DB bereits besteht und falls nicht wird sie kopiert (aus asset SQLite DB)
public void createDataBase() throws IOException {
boolean dbExist = checkDataBase();
if (dbExist) {
Log.i(DEBUG_TAG, "createDataBase -> Datenbank existiert");
} else {
this.getReadableDatabase();
Log.i(DEBUG_TAG, "else, db existiert nicht 1");
try {
copyDataBase();
Log.i(DEBUG_TAG, "nach copydatabase");
} catch (IOException e) {
throw new Error("Error copying database");
}
}
}
private boolean checkDataBase() throws SQLiteException {
SQLiteDatabase checkDB = null;
Boolean checkTable = false;
try {
String myPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READWRITE);
Log.i(DEBUG_TAG, "checkdatabase1");
} catch (SQLiteException e) {
Log.e(DEBUG_TAG, "Fehler checkDataBase: ", e);
}
if (checkDB != null) {
checkDB.close();
}
return checkDB != null ? true : false;
}
private void copyDataBase() throws IOException {
InputStream myInput = dbContext.getAssets().open(DB_NAME);
String outFileName = DB_PATH + DB_NAME;
OutputStream myOutput = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
Log.i(DEBUG_TAG, "copydatabase");
}
Im LogCat erhalte ich dann folgende Meldungen:
03-26 17:02:05.053: INFO/Database(24458): sqlite returned: error code = 14, msg = cannot open file at line 27206 of [42537b6056]
03-26 17:02:05.053: ERROR/Database(24458): sqlite3_open_v2("/data/data/ch.test.gui/databases/PSRDB1", &handle, 2, NULL) failed
03-26 17:04:17.683: INFO/Database(24458): sqlite returned: error code = 1, msg = no such table: tbl_test
Die 2te Meldung erhalte ich auch, wenn ich das Programm im Emulator laufen lasse. Weil die DB gibts ja noch nicht. Aber die Meldung 'cannot open file....' gefällt mir nicht so.
Beim 2ten Durchlauf bekomme ich dann nur noch die 3te Meldung.
Wie gesagt, im Emulator läuft das Ganze perfekt.
Muss man noch etwas zusätzliches beachten, wenn man Apps über USB-Debug auf dem Handy laufen lässt? Haber immer noch das Gefühl, dass es ein Berechtigungsproblem sein könnte.
Bin für jede Hilfe dankbar
Ile
PS: @FireRider hab mir deine App mal runtergeladen. Chapeau!!!
-
Bin neu hier
- 26.03.2011, 21:27
- #7
Habs nach stundenlangem googeln lösen können.
Falls es jemanden interessiert:
http://www.anddev.org/networking-dat...hd-t50364.html
Scheint am Handy-Typ zu liegen.
Ähnliche Themen
-
adb probleme
Von asmohh im Forum HTC Desire Root und ROMAntworten: 1Letzter Beitrag: 23.10.2010, 22:30 -
Adb Mounten?
Von Android_Newbie im Forum HTC Desire Root und ROMAntworten: 4Letzter Beitrag: 05.10.2010, 20:29 -
"Permission denied"
Von Unregistriert im Forum HTC HD2 AndroidAntworten: 3Letzter Beitrag: 17.08.2010, 23:24 -
Programme per ADB installieren
Von Froschkönig im Forum Google Nexus One Root und ROMAntworten: 8Letzter Beitrag: 08.03.2010, 15:52 -
Adb remount Fehler
Von Fraqq im Forum HTC Hero Root und ROMAntworten: 1Letzter Beitrag: 04.03.2010, 14:10
Pixel 10 Serie mit Problemen:...