![]() |
Sqlite-Daten mit verschiedenen Android-Apps austauschen
Ich habe 2 Apps programmiert:
App1 = "haushalt" mit sqlite-Daten in 'system.ioUtils.TPath.GetPublicPath+PathDelim' also '/Android/data/joerg.haushalt/files/haushalt.db' App2 = "einkauf" mit sqlite-Daten in 'system.ioUtils.TPath.GetPublicPath+PathDelim' also '/Android/data/joerg.einkauf/files/einkauf.db' Beide Apps laufen für sich super gut. Nun kam mir folgende Idee: wenn ich in App1 (haushalt) einen Artikel reduziere, soll er automatisch in der einkauf.db von App2 gelistet werden. Nur wie kann ich von App1 auf die Daten von App2 zugreifen? (sind ja verschiedene Verzeichnisse). Die sqlite-Daten in beiden Apps verwalte ich mit den FireDac-Komponenten FDConnection und FDQuery. Ich würde dann in App1 eine 2.FDConnection für die Daten in App2 machen, etwa so:
Delphi-Quellcode:
In beiden Apps sind die Permissions für write_external_Storage und read_external_storage gesetzt.
function Tfrm_haushalt.connection : boolean;
begin FDConn2.Connected := False; FDconn2.Params.Clear; FDconn2.Params.Add('DriverID=sqlite'); FDconn2.Params.Add('StringFormat=Unicode'); // die folgende Zeile ist so sicherlich falsch - aber wie ist's richtig? FDconn2.Params.Add('Database=/storage/emulated/0/Android/data/joerg.einkauf/files/einkauf.db');// das Problem ist die Pfadangabe! try FDconn2.Connected := true; // wenn die params stimmen, wird zur Datenbank verbunden Result := true; except Result := false; end; end; Bis einschl. Delphi 10.4 konnte ich ja direkte Pfade verwenden, aber das geht wohl in Delphi 11.3 nicht mehr - oder? Wie krieg ich nun in D11.3 die Verbindung hin? Das Problem ist wohl der Datenbank-Pfad zu App2. Hat jemand 'ne Idee hierzu? Die einzige Lösung, die ich im Moment sehe, ist, beide Apps in einer einzigen zusammenzuführen. Aber das möchte ich eigentlich nicht. Sie sollen eigenständig bleiben. |
AW: Sqlite-Daten mit verschiedenen Android-Apps austauschen
Ohne Root wird das wird das, glaube ich, nichts mit dem direkten Zugriff.
Mir fällt da jetzt ein etwas umständlicher Weg ein. Du könntest beim Schließen der ersten App die Datenbank in ein externes Verzeichnis kopieren und beim Öffnen der anderen App die Datenbank in das eigene Verzeichnis importieren und kannst die Datenbank da dann ansprechen. |
AW: Sqlite-Daten mit verschiedenen Android-Apps austauschen
Android macht leider vieles mit der Zeit dicht.
Es gibt auch einen Unterschied, ob es auf dem internen Speicher oder dem externen Speicher (SD-Card) liegt. Es gab hier auch bereits mehrere Threads, bezüglich "gemeinsamer" Zugriffe. Wäre bestimmt eine Idee mal danach zu suchen. :zwinker: Was immer ging: Dateien außerhalb, also auf "deinem" Server oder im Google-Drive. Oder du erstellst dir eine Activity, welche vom jeweils anderen Programm aufgerufen wird, und worüber die aktuellen Daten übergeben oder abgeholt werden, bzw. wenn beide Programme gleichzeitig aktiv sind, via TCP/IP (Server\Client) auf localhost die aktuellen Daten austauschen. Oder du mußt mal schauen, was andere Programme für Rechte haben, also die File-Browser, aber ob Google dir so einfach erlaubt diese Rechte zu benutzen .... glaub nicht. |
AW: Sqlite-Daten mit verschiedenen Android-Apps austauschen
meine Lösung z.Zt: nicht Firedac, sondern Mydac benutzen! Klappt hervorragend.
|
AW: Sqlite-Daten mit verschiedenen Android-Apps austauschen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz