German SQL-Datei auf Samsung Tablet erstellen

strupp01

Active Member
Licensed User
Longtime User
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
1581259088064.png

Ich arbeite in einem anderen Programm mit einer großen Datenbank, da geht alles.
 

strupp01

Active Member
Licensed User
Longtime User
Ich benutze ein programm aus dem Forum und bringe nur die Zeilen ab FirstTime hinzu
1581260909794.png

Das Programm ist für GPS-Erkennung und heißt GNSS_v1.0.zip
 

strupp01

Active Member
Licensed User
Longtime User
Laut Internet müßte bei Android Version 8.1.0 die targedsdk-Version 27 sein.
Die GPS-Erkennung funktioniert.
 

strupp01

Active Member
Licensed User
Longtime User
B4X:
'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"/>)
 

DonManfred

Expert
Licensed User
Longtime User
android:targetSdkVersion="27"/>
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).
 

mw71

Active Member
Licensed User
Longtime User
moin,

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.
 

pucki

Active Member
Licensed User
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.

Gruß

Pucki
 

mw71

Active Member
Licensed User
Longtime User
bin neugierig,

-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)
 

strupp01

Active Member
Licensed User
Longtime User
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

1581854919070.png

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
 

pucki

Active Member
Licensed User
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. :mad:👿

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 :)

Gruß

Pucki
 

mw71

Active Member
Licensed User
Longtime User
danke für die Info.

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:rolleyes:
 
Top