• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Android 4.4.2 Kitkat Problem Cachebox-Installation SD-Card?

Koblenzer

Geomaster
Hallo zusammen,
ich habe gestern mein Galaxy Note 3 von der Android Version 4.3 auf die Version 4.4.2 geupdatet. Leider kann ich seitdem meine Cachebox-Installation auf der externen SD-Karte nicht mehr benutzen, ACB stürzt kurz nach dem Programmstart ab, sobald ich den Installationspfad zur bestehenden Installation auswähle. Aber auch wenn ich das vorhandene Verzeichnis entferne, sodass ACB komplett ein neues anlegen kann, bleibt ACB bei "Copy resources" hängen, ein neuer Cachebox-Ordner wird nicht erstellt.
Ich gehe ganz stark davon aus, dass es sich dabei um das Problem handelt, dass Apps seit Kitkat nicht mehr ohne weiteres auf die externe SD-Karte schreiben dürfen. Das ist von Google so gewollt, warum auch immer. Allerdings können die Apps auf irgendeinem, mir nicht konkret bekannten Weg, dennoch den Schreibzugriff erlangen, sofern sie angepasst wurden.
Dies ist bei zahlreichen Apps noch nicht geschehen, diese können dann nicht auf die externe SD-Karte schreiben, leider scheint das auch bei ACB der Fall zu sein.
Kann ich hier mit Abhilfe rechnen? Ich habe damit nämlich gerade ein akutes Problem, denn auf der externen Speicherkarte lege ich eigentlich alle Daten der Testversion ab, dazu kommen auch noch Zugriffe der Storeversion.

Code:
02-27 07:26:15.875 D/CACHEBOX(9781): ShowDialog: MsgBoxCachebox beenden? X,Y/Width,Height = 96.0,678.0/888.0,489.0
02-27 07:26:17.185 V/Vibrator(9781): Called vibrate(long) API - PUID: 10290, PackageName: de.droidcachebox
02-27 07:26:17.185 V/Vibrator(9781): vibrate - PUID: 10290, PackageName: de.droidcachebox, ms: 20, mag: -1
02-27 07:26:17.185 V/SmartFaceService - 3rd party pause(861): onReceive [android.intent.action.ACTIVITY_STATE/de.droidcachebox/pause]
02-27 07:26:17.185 V/VibratorService(861): vibrateMagnitude - package: de.droidcachebox, ms: 20, token: android.os.BinderProxy@45d740f0, magnitude: 10000
02-27 07:26:17.195 D/CACHEBOX(9781): Main=> onPause
02-27 07:26:17.215 D/CACHEBOX(9781): Set: RenderContinous
02-27 07:26:17.515 D/CACHEBOX(9781): Main=> onDestroy
02-27 07:26:17.515 D/CACHEBOX(9781): Main=> onDestroy isFinishing
02-27 07:26:17.515 I/LocationManagerService(861): remove 441ff760 by de.droidcachebox
02-27 07:26:17.675 I/ActivityManager(861): Process de.droidcachebox (pid 9781) (adj 11) has died.
02-27 07:26:17.675 I/WindowState(861): WIN DEATH: Window{44ae9250 u0 de.droidcachebox/de.droidcachebox.main}
02-27 07:26:17.675 W/WindowManager(861): Force-removing child win Window{463b4f90 u0 SurfaceView} from container Window{44ae9250 u0 de.droidcachebox/de.droidcachebox.main}
02-27 07:27:06.995 V/ApplicationPolicy(861): isApplicationStateBlocked userId 0 pkgname de.cachebox_test
02-27 07:27:07.165 V/SmartFaceService - 3rd party pause(861): onReceive [android.intent.action.ACTIVITY_STATE/de.cachebox_test/create]
02-27 07:27:07.325 D/dalvikvm(10326): Trying to load lib /mnt/asec/de.cachebox_test-1/lib/libgdx.so 0x432cdd50
02-27 07:27:07.345 D/dalvikvm(10326): Added shared lib /mnt/asec/de.cachebox_test-1/lib/libgdx.so 0x432cdd50
02-27 07:27:07.345 D/dalvikvm(10326): No JNI_OnLoad found in /mnt/asec/de.cachebox_test-1/lib/libgdx.so 0x432cdd50, skipping init
02-27 07:27:11.245 E/SQLiteDatabase(10326): Failed to open database '/storage/extSdCard/CacheBox/User/Config.db3'.
02-27 07:27:11.245 E/SQLiteDatabase(10326): 	at de.cachebox_test.DB.AndroidDB.Initialize(AndroidDB.java:40)
02-27 07:27:11.245 E/SQLiteDatabase(10326): 	at de.cachebox_test.splash.Initial(splash.java:888)
02-27 07:27:11.245 E/SQLiteDatabase(10326): 	at de.cachebox_test.splash.access$5(splash.java:832)
02-27 07:27:11.245 E/SQLiteDatabase(10326): 	at de.cachebox_test.splash$6.run(splash.java:824)
02-27 07:27:11.245 W/System.err(10326): 	at de.cachebox_test.DB.AndroidDB.execSQL(AndroidDB.java:94)
02-27 07:27:11.245 W/System.err(10326): 	at de.cachebox_test.splash.Initial(splash.java:888)
02-27 07:27:11.245 W/System.err(10326): 	at de.cachebox_test.splash.access$5(splash.java:832)
02-27 07:27:11.245 W/System.err(10326): 	at de.cachebox_test.splash$6.run(splash.java:824)
02-27 07:27:11.245 W/System.err(10326): 	at de.cachebox_test.DB.AndroidDB.execSQL(AndroidDB.java:94)
02-27 07:27:11.245 W/System.err(10326): 	at de.cachebox_test.splash.Initial(splash.java:888)
02-27 07:27:11.245 W/System.err(10326): 	at de.cachebox_test.splash.access$5(splash.java:832)
02-27 07:27:11.245 W/System.err(10326): 	at de.cachebox_test.splash$6.run(splash.java:824)
02-27 07:27:11.245 W/System.err(10326): 	at de.cachebox_test.DB.AndroidDB.execSQL(AndroidDB.java:94)
02-27 07:27:11.245 W/System.err(10326): 	at de.cachebox_test.splash.Initial(splash.java:888)
02-27 07:27:11.245 W/System.err(10326): 	at de.cachebox_test.splash.access$5(splash.java:832)
02-27 07:27:11.245 W/System.err(10326): 	at de.cachebox_test.splash$6.run(splash.java:824)
02-27 07:27:11.255 E/AndroidRuntime(10326): Process: de.cachebox_test, PID: 10326
02-27 07:27:11.255 E/AndroidRuntime(10326): 	at de.cachebox_test.DB.AndroidDB.insert(AndroidDB.java:127)
02-27 07:27:11.255 E/AndroidRuntime(10326): 	at de.cachebox_test.splash.Initial(splash.java:888)
02-27 07:27:11.255 E/AndroidRuntime(10326): 	at de.cachebox_test.splash.access$5(splash.java:832)
02-27 07:27:11.255 E/AndroidRuntime(10326): 	at de.cachebox_test.splash$6.run(splash.java:824)
02-27 07:27:11.255 W/ActivityManager(861):   Force finishing activity de.cachebox_test/.splash
02-27 07:27:11.295 D/CrashAnrDetector(861): processName: de.cachebox_test
02-27 07:27:11.295 D/CrashAnrDetector(861): broadcastEvent : de.cachebox_test data_app_crash
02-27 07:27:11.295 V/SmartFaceService - 3rd party pause(861): onReceive [android.intent.action.ACTIVITY_STATE/de.cachebox_test/pause]
02-27 07:27:12.905 I/ActivityManager(861): Process de.cachebox_test (pid 10326) (adj 11) has died.
 

Longri

Geoguru
Ich habe es mir angesehen und auf Anhieb keinen Lösungsweg gefunden, den ich durch ein Schuss ins Blaue versuchen könnte.
Und jetzt habe ich ein Problem, denn ich habe gehofft, dass ich für mein S3 demnächst auch 4.4 bekomme. Aber leider scheint es hier doch kein Update mehr für das S3 zu geben.

Ich werde mir also einen Emulator für 4.4 installieren müssen und darauf hoffen, dass ich damit den Fehler nachstellen kann, um ihn zu beheben.

Gruß Andre
 
OP
Koblenzer

Koblenzer

Geomaster
Bin mir mittlerweile nicht mehr sicher, ob das Problem überhaupt in der App lösbar ist. Habe zwischenzeitlich irgendwo gelesen, dass mit Anpassung die App dann zwar auf die externe SD schreiben darf, allerdings keine Ordner anlegen. Wenn dem wirklich so ist, würde das eine Installation wohl auch unmöglich machen.
Habe mir nun so beholfen, dass ich eine speziell gepatchte platform.xml für mein Note 3 unter /system/etc/permissions eingespielt habe. Damit ist die Einbindung der externen SD-Karte wieder wie in den Vorgängerversionen von Android geregelt, Apps können wieder normal darauf schreiben. Das hilft aber leider der Allgemeinheit nicht weiter, da dafür Rootrechte benötigt werden :-(
 

KoiMuggele

Geocacher
Koblenzer schrieb:
Habe mir nun so beholfen, dass ich eine speziell gepatchte platform.xml für mein Note 3 unter /system/etc/permissions eingespielt habe. Damit ist die Einbindung der externen SD-Karte wieder wie in den Vorgängerversionen von Android geregelt, Apps können wieder normal darauf schreiben. Das hilft aber leider der Allgemeinheit nicht weiter, da dafür Rootrechte benötigt werden :-(

Das könnte der Grund dafür sein, dass ich keine Probleme mit der Kombination Android 4.4.2 und Cachebox auf SD-Karte habe. Vermutlich ist das bei Cyanogenmod schon entsprechend angepasst und Rootrechte sind da ja sowieso selbstverständlich...
 

Saarfuchs

Geocacher
Leider kann ich diesen Fehler auch für das neue "ungepatchte" Galaxy S5 mit Android 4.4.2 bestätigen.

Nach einer Installation der Storeversion von Cachebox bekomme ich die Frage, ob ich ein Arbeitsverzeichnis neu erstellen will. Natürlich will ich das auf der externen SD-Karte - dort kann ich auch ein Verzeichnis anlegen und auswählen. Cachbox quitiert diese Aktion jedoch mit "no write access" und schließt sich darauf hin...

Wäre schön, wenn das irgendwie zu fixen wäre?

Danke & Gruß,
Joerg
 

Lemmi1de

Geowizard
Args! Das höre ich gar nicht gerne.

Ich hab mit dem Gedanken gespielt mir ein Samsung Galaxy S5 zu kaufen und dann gerade den Threat hier gesehn. Ich glaube ich warte noch bis ihr das Problem irgendwie hinkriegt. Weil auf Cachebox verzichten möchte ich ungern.

Ich hatte Android 4.4.2 auf meinem gerooteten Desire HD kurz drauf, da klappte alles wunderbar. Aber das war CyanogenMod 11. Ich denke da wird einiges angepasst sein.

Aber ich wollte bei einem neuen Smartphone erstmal nicht mehr rooten, sondern es im Originalzustand lassen.

Also bleib ich erstmal bei meiner doch veralteten Android Version erstmal und geniese die App und warte mal ab ...

Gruss Lemmi1de.
 

Longri

Geoguru
Eigentlich dachte ich, das ACB hier nicht mehr abstürzt? So hatte ich das jedenfalls im Simulator getestet. Wenn man einen Ordner auf der ExtSd auswählt, auf den ACB keine Schreibrechte hat, dann sollte diese Meldung kommen und man kann einen anderen Ordner auswählen.
Der Absturz ist hier nicht schön, mangels passender Hardware kann ich es aber nicht testen.

Ich hoffe, dass ich hier noch ein Update für mein S3 bekomme, denn bis bei mir ein neues Handy ansteht, dauert es noch eine Weile.

Aber vielleicht könnte SaarFuchs hier mal Debuggen? ;-)

Oder irgendjemand bekommt den einzig zulässigen Pfad raus und Postet ihn hier.
Denn es gibt einen, auf dem wir schreiben dürfen. Da ich es nicht testen kann, kann ich auch nicht sagen, wie wir an diesen ran kommen. Es gibt eine Methode getExternalStorage() welche aber in der Vergangenheit auch gerne mal einen Pfad zur internen SD geliefert hat. Ob das bei 4.4.2 immer noch so ist, kann ich nicht sagen.

Ich würde euch hier gerne helfen, kann es aber leider nicht!

Gruß Andre
 
OP
Koblenzer

Koblenzer

Geomaster
Lemmi1de schrieb:
Weil auf Cachebox verzichten möchte ich ungern.
Musst du auch nicht, es reicht ja den Cacheboxordner auf der internen SD anzulegen. Der ist sicher beim S5 groß genug. Zudem müsste es möglich sein, ggf. speicherintensive Offlinekarten weiterhin auf der externen SD abzulegen.
 

mitlaeufer

Geocacher
Hi,

ich habe bei meinem Z2 ähnliche Probleme. Ich bekomme die Meldung, dass die externe SD Karte nicht schreibbar ist und cachebox stürzt nicht ab. Der crash ist also erstmal gefixed.
Ich hatte jetzt natürlich die Idee vorerst mal nur das Verzeichnis für die Karten auf die SD Karte umzubiegen, aber das funktioniert im Moment auch nicht. Es erscheint ebenfalls sehr kurz die Meldung, dass das Verzeichnis nicht schreibbar ist.
Ich weiß nicht, wie aufwendig das zu ändern ist, bzw. ob eine Lösung für die Schreibrechte in Sicht ist, aber das Kartenverzeichnis auf SD verschieben zu können würde schon erheblich helfen.
Leider ist rooten im Moment noch problematisch insofern kann ich nicht so ohne weiteres die Schreibrechte verändern.
 

ersthelfer

Geocacher
aber das Kartenverzeichnis auf SD verschieben zu können würde schon erheblich helfen

Also ich habe mir auf der SD-Karte ein verzeichnis für die Map's angelegt und den Pfad dorthin direkt in die Datenbank geschrieben.

Soweit ich weis, wird auf das Kartenverzeichnis ja nicht geschrieben, oder?
 

GeoSilverio

Geowizard
Kommt drauf an. Die vectorkarten werden nur gelesen, sobald man auf mapnik oder sowas umschaltet, wird natürlich auch oft geschrieben.
 

mitlaeufer

Geocacher
Vielen Dank!
Das manuelle überschreiben des Kartenpfades hat bei mir auch geholfen.
Hier eine etwas genauere Beschreibung, falls das sonst noch jemand braucht:
Die Datei cachebox/User/Config.db3 muss angepasst werden.
Ich habe die Datei dazu mittels Airdroid auf meinen Rechner kopiert und mit sqliteman (Ubuntu) bearbeitet. Da es sich um ein sql DB handelt, kann man dies mit sql statements bearbeiten.
Den Inhalt der DB kann man mit folgendem Befehl sehen:
Code:
select * from config
Überschreiben des MapPackFolder dann mittels:
Code:
update config set LongString = "/storage/sdcard1/maps" where Key = "MapPackFolder"
Der Pfad passt für die SD-Karte des Z2, ggf. muss der natürlich angepasst werden.
Danach die Datei wieder hochladen (Achtung Airdroid überschreibt nicht die alte Datei sondern benennt die neue um).
In cachebox sollte man jetzt unter Einstellungen | Ordner den neuen Pfad sehen.
 

mitlaeufer

Geocacher
Über die Settings hat das bei mir nicht funktioniert. Da erschien auch irgendwie eine Warnung von wegen nicht schreibbar und dann gab es einen fallback auf den alten Wert.
Durch manuelles editieren der config kann man diesen check offenbar umgehen.
 
Oben