AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Sqlite-Daten mit verschiedenen Android-Apps austauschen
Thema durchsuchen
Ansicht
Themen-Optionen

Sqlite-Daten mit verschiedenen Android-Apps austauschen

Offene Frage von "dynamo"
Ein Thema von dynamo · begonnen am 6. Aug 2023 · letzter Beitrag vom 7. Aug 2023
Antwort Antwort
dynamo

Registriert seit: 21. Okt 2008
Ort: Bordesholm
37 Beiträge
 
Delphi 11 Alexandria
 
#1

Sqlite-Daten mit verschiedenen Android-Apps austauschen

  Alt 6. Aug 2023, 13:09
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.
Jörg
  Mit Zitat antworten Zitat
AndyBo

Registriert seit: 5. Jun 2023
16 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Sqlite-Daten mit verschiedenen Android-Apps austauschen

  Alt 6. Aug 2023, 23:32
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Sqlite-Daten mit verschiedenen Android-Apps austauschen

  Alt 7. Aug 2023, 04:41
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.

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.
$2B or not $2B

Geändert von himitsu ( 7. Aug 2023 um 17:14 Uhr)
  Mit Zitat antworten Zitat
dynamo

Registriert seit: 21. Okt 2008
Ort: Bordesholm
37 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Sqlite-Daten mit verschiedenen Android-Apps austauschen

  Alt 7. Aug 2023, 17:12
meine Lösung z.Zt: nicht Firedac, sondern Mydac benutzen! Klappt hervorragend.
Jörg
  Mit Zitat antworten Zitat
dynamo

Registriert seit: 21. Okt 2008
Ort: Bordesholm
37 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Sqlite-Daten mit verschiedenen Android-Apps austauschen

  Alt 7. Aug 2023, 17:20
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.
Ja, das geht auch. hierfür bietet sich system.ioUtils.TPath.GetSharedDocumentsPath an. Da kann man sich richtig austoben.
Jörg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 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