Bin im moment etwas verwirrt. Ich will auf meinem Androit Tablet eine SQL-Datenbank erzeugen. Dies versuche ich mit
SQL1_DB.Initialize(File.DirRootExternal,"Test/Test.db", True)
Bekomme immer eine Fehlermeldung
Ich arbeite in einem anderen Programm mit einer großen Datenbank, da geht alles.
'This code will be applied to the manifest file during compilation.
'You do not need to modify it in most cases.
'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136
AddManifestText(
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="27"/>
<supports-screens android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true"/>)
SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$")
'End of default text.
AddManifestText(<uses-feature android:name="android.hardware.location.gps"/>)
Das ist die von Dir eingesetzte targetsdk. 27 in deinem Fall.
Kommen wir wieder zu #2 in diesem Thread. Guck Dir das Tutorial an 2. Link und vor allem guck Dir den ersten Link an. Da steht alles beschrieben für alle sdk Sonderheiten.
Die Lösung deines Problems liegt in der Umsetzung der Runtimepermissions (link 2 in #2).
ich vermute (rate) mal das es am "Test/Test.db" liegt (das das Verzeichnis nicht existiert). Versuche mal "Test.db"
oder, wenn du nicht unbedingt auf das File mit einem anderen Programm zugreifen musst:
SQL1_DB.Initialize(File.DirInternal,"Test.db", True)
Das "Problem" ist, das Android recht restriktiv ist mit den Zugriffs/Schreibrechten.
Mit den RuntimePermissions kannst du dir u.a. die passende Stelle zum speichern.
Wenn es nicht aus Programm technischen Gründen erforderlich ist, würde ich die Datenbank immer fertig auf den PC erzeugen, und dann einfach im Paket mit herüber schieben. Spart ne Menge Code und der Mensch ist faul.
-was hast du (im Manifest) geändert?
-wird das Unterverzeichnis automatisch erstellt ?(bis jetzt erstelle ich es immer vorher, wenn der Fall mal eintritt das ich eines brauche)
Das Unterverzeichnis war schon vorhanden.
Geändert wurde der Eintrag
Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
im Activity und
im Manifest die Zeilen 5 und neu die Zeilen 7 und 8
Die targedSDKVersion 26 sollte noch auf 27 geändert werden, da für Android 8.0 die Version 26 richtig ist aber für meine 8.1.0 die Version 27 richtig währe. Es funktioniert aber auch mit Version 26.
Aus Unwissenheit habe ich dies nicht beachtet und bin froh, dass Forummitglieder mit höheren Wissenstand in der Programmierung mir auf die Sprünge helfen.
Gruss strupp01
Aus Unwissenheit habe ich dies nicht beachtet und bin froh, dass Forummitglieder mit höheren Wissenstand in der Programmierung mir auf die Sprünge helfen.
Gruss strupp01
Ja das Problem kenne ich. Ich habe und tue es z.T. immer noch ;( das Manifest sträflich vernachlässigt. Der Schaden ist im ersten Moment nicht einmal zu erkennen. Da bei mir, das Android meine alte Prg-Version problemlos mit den neuen OS laufen lies. Dann machst du eine kleine Änderung am Programm und schon läuft NIX mehr. Da kommt dann Freude auf.
Naja. Ich schreibe ja nur die Programme für mich. Außer meiner Spionage-sicherer Einkaufsliste. Die habe ich auch auf das Handy meiner Schwester getan
Wenn du die WRITE_EXTERNAL_STORAGE weder im Manifest (bei deinem Eintrag nur bis SDK 19 wirksam, holt sich die Berechtigung gleich bei der Installation) noch per Runtime Permission angefordert hast (wie bei "neuerem" empfohlen) dann sind die Möglichkeiten wo du was speichern kannst sehr begrenzt.
Seit ich mit Android 4 angefangen habe hat sich das immer wieder geändert. Ich hab jetzt 2 oder 3 verschiedene Varianten wie ich den Pfad(e) ermittle, abhäng von der Android Version