Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Datenbanken unter Android mit verschiedenen Apps (https://www.delphipraxis.net/211313-datenbanken-unter-android-mit-verschiedenen-apps.html)

skoschke 29. Aug 2022 07:54

Datenbanken unter Android mit verschiedenen Apps
 
Hallo,

nach etlichen Android-Updates habe ich plötzlich ein Problem:

Es gibt 2 Apps auf dem Handy, die jeweils eine Datenbank besitzen.
Diese Datenbanken liegen im internen Speicher, unter öffentliche Dokumente/App_A/Database und öffentliche Dokumente/App_B/Database.

App_A konnte bisher problemlos auf die Datenbank von App_B zugreifen, das führt aber aktuell zu Laufzeitfehlern "unable to open database file"

Ich habe keine Ahnung wie ich das beheben könnte, Betriebssystem ist Android 12

Danke für Tipps

Ciao
Stefan

Nachtrag:
Nach Deinstallation und Neuinstallation von App_A kann diese auch nicht mehr auf ihre eigene Datenbank zugreifen!
Verdammter Mist, wer kann helfen?

Rollo62 29. Aug 2022 19:43

AW: Datenbanken unter Android mit verschiedenen Apps
 
Die Files (auch von DBs wiw Sqlite) sollten eigentlich in einer Sandbox bei der eigenen App liegen.
Einfach von "draußen" drauf zugreifen ist schwierig, inkompatibel und wird wohl immer weiter zurückgeschraubt als jetzt schon.
Das in "common folder" zu legen von wo aus mehrere drauf zugreifen können ist fast nicht mehr möglich.

Ich denke mal es wäre der richtige Weg dafür wenn man sowas wie seinen eigenen "DB-Server" als Service verpackt,
welchen dann verschiedene Apps parallel nutzen könnten.
Soweit ich weiss kann ein Service mit mehreren Apps verbunden werden, aber 100% sicher ob und wie das sauber ohne Probleme läuft bin ich auch nicht.

Ansonsten ist es wohl am einfachsten und saubersten einen externen REST-Server als DB zu nutzen, das sollte eigentlich immer gehen.
Für den rein lokalen Zugriff könnte das eine lokale Sqlite DB sein, die mit dme rEST-Server synchronisiert wird.

skoschke 31. Aug 2022 08:07

AW: Datenbanken unter Android mit verschiedenen Apps
 
Danke erst mal für die Antwort...

Die App wird bei Handwerksbetrieben eingesetzt, da kann ein APK installiert werden, mehr kann und möchte ich daher den Anwendern an Installation nicht zumuten...

Eine andere Idee hätte ich da aber noch:
Kann man von App_A einen Intent an App_B senden, welcher diese App öffnet?
Dort könnte der Anwender dann z.B. eine Adresse auswählen, welche dann als Intent wieder an App_A zurückgesendet wird?

Oder wie meinst Du die Lösung mit einem Service?

Ciao
Stefan

Rollo62 31. Aug 2022 18:54

AW: Datenbanken unter Android mit verschiedenen Apps
 
Zitat:

Zitat von skoschke (Beitrag 1511039)
Oder wie meinst Du die Lösung mit einem Service?

Ich meine einen Android-Service, der könnte womöglich mehrere Apps bedienen.

Die APK sieplt eigentlich keine Rolle, ob über PlayStore oder anderswo her, aber der Zugriff auf Speicher der nicht zu deiner App gehört wird immer mehr eingeschränkt.
Deshalb der Ausweg über einen externen REST-Server, dann liegen die Daten eben nicht mehr lokal wo Android Dich ständig bevormundet
und Du hast den vollen Zugriff darauf.
Braucht aber halt einen Server.

Gerade bei professioneller Software macht das Auslagern auf Server doch sehr viel Sinn.
Z.B. App ist kostenlos, der Kunde muss sich aber auf deinem Server registrieren mit einer Subscription.
Nur so als Gedanke.

jobo 31. Aug 2022 20:07

AW: Datenbanken unter Android mit verschiedenen Apps
 
Ein Service unter Android kann ohne Gui laufen, vergleichbar mit Windows. Der Service würde die DB Anfragen bedienen, ggF. auch für mehrere Apps.
Ein externer Server wäre naheliegend, Ausschlussgründe wären nur erhöhter Aufwand eben für den Serverbetrieb und Monitoring und Absicherung. Außerdem benötigt der natürlich eine Internetverbindung (WLAN oder SIM), das ist vielleicht gerade in Handwerkssituationen nicht immer gegeben, Funkloch oder Heizungskeller halt. Ein gut betriebener externer Server würde dann dem Nutzer den Mehrwert bringen, dass er auch Handy /Datenverlust abfängt, das schnelle Teilen von Daten erlaubt usw.

Außerdem muss der Service natürlich extra installiert werden, das kann aber denke ich im Rahmen der Installation der eigentlichen App erfolgen.

P.S.: Vielleicht hilft auch ein ContentProvider
https://developer.android.com/guide/...tent-providers

Rollo62 1. Sep 2022 06:15

AW: Datenbanken unter Android mit verschiedenen Apps
 
@Jobo: Genau so.

Zitat:

Zitat von jobo (Beitrag 1511066)
Außerdem benötigt der natürlich eine Internetverbindung (WLAN oder SIM), das ist vielleicht gerade in Handwerkssituationen nicht immer gegeben

Das ist auch kein Problem, denn jede App kann ja ihren eigenen lokalen DB-Server haben.
Es gibt da auch irgendwo in den D11 Demos ein komplettes Demo zu LocalSQL, ich finde es nur gerade nicht.
https://docwiki.embarcadero.com/RADS..._SQL_(FireDAC)
https://www.youtube.com/watch?v=QA-xhfYoEq4

Allerdings muss man sich dann um die Replikation lokal und remote DB kümmern, aber das ist machbar.
Es gibt natürlich auch "fertige" Lösungen wie TMS Aurelius für Server und Client, dann muss man sich aber damit an TMS binden.

TurboMagic 1. Sep 2022 21:48

AW: Datenbanken unter Android mit verschiedenen Apps
 
Man kann auch Intents Programmieren und damit andere Anwendungen aufrufen bzw. in denen was Aufrufen.
Es gab zumindest mal (vermutlich immer noch vorhanden) ein Beispiel zur Nutzung udn Erstellung von Intents.
Schau' mal in den Beispielen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz