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:
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;
In beiden Apps sind die Permissions für write_external_Storage und read_external_storage gesetzt.
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.