AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Einfachen String als Datei speichern und via Intent an eine APP übergeben
Thema durchsuchen
Ansicht
Themen-Optionen

Einfachen String als Datei speichern und via Intent an eine APP übergeben

Ein Thema von fisipjm · begonnen am 15. Jan 2024 · letzter Beitrag vom 17. Jan 2024
 
fisipjm

Registriert seit: 28. Okt 2013
251 Beiträge
 
#1

Einfachen String als Datei speichern und via Intent an eine APP übergeben

  Alt 15. Jan 2024, 15:57
Hi,

Ich glaub ich stehe heute extrem auf dem Schlauch.
Ich versuche folgendes, aus meiner Sicht einfaches, Vorhaben zu realisieren.

Ich entwickle mit FireMonkey (FMX) eine Android App (eigentlich auch iOS, aber so weit will ich ja noch gar nicht gehen).
In dieser APP habe ich einen einfachen String. In dem String eine kleine HTML Datei.
Das einzige was ich jetzt machen möchte, ist den String zu speichern (von mir aus auch ohne speichern, wüsste aber nicht wie das gehen soll) und die Datei per intent an den Android Öffnen dialog zu übergeben. Aber jedes mal wenn ich eine APP zum öffnen auswähle bekomme ich entweder die Meldung, dass die Datei nicht existiert oder der Zugriff nicht möglich ist.

Ich verwende Delphi 12. Ich entwickle auf Android 14. Ich habe in der Berechtigungsliste die sichere Dateifreigabe aktiviert.
Die Datei provider_paths.xml sieht so aus:

Code:
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="internal_private_files" path="."/>
<cache-path name="internal_cache_files" path="."/>
<external-path name="external_public_files" path="."/>
<external-files-path name="external_private_files" path="."/>
<external-cache-path name="external_cache_files" path="."/>
<external-media-path name="external_media_files" path="."/>
</paths>
Mein Code mit dem ich das Versuche sieht so aus

Delphi-Quellcode:
procedure Share;
{$IF DEFINED(ANDROID)}
  procedure OpenHTMLFile(const FilePath: string);
  var
    Intent: JIntent;
    arch: JFile;
    Uri: Jnet_Uri;
  begin
    arch := TJFile.JavaClass.init(StringToJString(FilePath));
    arch.setReadable(true, false);

    if TJBuild_VERSION.JavaClass.SDK_INT >= 24 then
    begin
      Uri := TJcontent_FileProvider.JavaClass.getUriForFile(TAndroidHelper.Context,
        StringToJString(System.Concat(JStringToString(TAndroidHelper.Context.getPackageName), '.fileprovider')), arch);
    end
    else
    begin
      Uri := TJnet_Uri.JavaClass.fromFile(arch);
    end;

    Intent := TJIntent.Create;
    Intent.putExtra(TJIntent.JavaClass.EXTRA_NOT_UNKNOWN_SOURCE, true);
    Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
    Intent.setDataAndType(Uri, StringToJString('text/html'));

    TAndroidHelper.Context.startActivity(Intent);
  end;
{$ENDIF}

var
  Filename: String;
  lHTML: String;
begin
  lHTML:='<HTML><HEAD></HEAD><BODY><h1>Hallo World!</h1></BODY><HTML>'
  Filename := TPath.Combine(TPath.GetPublicPath, 'MyHTML.html');
  TFile.WriteAllText(Filename, lHTML);

{$IF DEFINED(ANDROID)} OpenHTMLFile(Filename); {$ENDIF}
end;
Hat jemand einen hinweis was ich falsch mache?
  Mit Zitat antworten Zitat
 

 

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 18:31 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