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
 
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.014 Beiträge
 
Delphi 12 Athens
 
#8

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

  Alt 17. Jan 2024, 10:42
Ich benutze das hier um Dateien (Logs der App) mit Gmail "mailto" zu teilen...
Es funktioniert irgendwie nur mit GMail...ich glaube es geht nicht nicht mit whatsapp...
Auf jedenfall
-Baue ich die Fileprovider URL anders zusammen
-Ich setze einen Mime type damit er nicht versucht es zu öffnen...bei dir wäre aber vielleicht 'text/html' angemessen.
-Ich setzte Read permissions
Vielleicht hilft es wenn du mit den 3 sachen bei dir im Projekt etwas spielst....
Ich habe das auch nur durch wildes ausprobieren und raten ans laufen bekommen.

Delphi-Quellcode:
Class procedure TFileProviderService.SendFileToChooser(file_name: string);
{$IFDEF ANDROID}
var
  content,id:String;
  theFile: JFile;
  Intent: JIntent;
  FileURI:JNet_URI;
  ParcelURI:JParcelable;
{$ENDIF}
begin
{$IFDEF ANDROID}

  if System.SysUtils.TOSVersion.Check(7) then
  Begin
    theFile := TJFile.JavaClass.init(StringToJString(file_name));
    FileURI := TAndroidHelper.JFileToJURI(theFile);
    ParcelURI := JParcelable(FileURI);

    Intent := TJIntent.Create;
    Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
    Intent.setDataAndType(fileuri,StringtoJstring('application/*'));
    Intent.PutExtra(TJIntent.JavaClass.EXTRA_STREAM, ParcelURI);
    Intent.SetFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);
    //depricated// SharedActivity.startActivity(TJIntent.JavaClass.createChooser(intent, StrToJCharSequence ('Share With')));
    TAndroidHelper.Activity.startActivity(TJIntent.JavaClass.createChooser(intent, StrToJCharSequence ('Share With')));
  End
  else
  Begin
    theFile := TJFile.JavaClass.init(StringToJString(file_name));

    id := JStringToString( TAndroidHelper.Context.getApplicationContext.getPackageName ) + '.fileprovider';
    content := 'content://' + id + '/root' + JStringToString( theFile.getCanonicalPath );

    FileURI := TJnet_Uri.JavaClass.parse(StringtoJString(content));
    ParcelURI := JParcelable(FileURI);

    Intent := TJIntent.Create;
    Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
    Intent.addFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);
    Intent.PutExtra(TJIntent.JavaClass.EXTRA_STREAM, ParcelURI);
    Intent.setDataAndType(fileuri,StringtoJstring('application/*'));
    //depricated// SharedActivity.startActivity(TJIntent.JavaClass.createChooser(intent, StrToJCharSequence ('Share With')));
    TAndroidHelper.Activity.startActivity(TJIntent.JavaClass.createChooser(intent, StrToJCharSequence ('Share With')));
  End;
{$ENDIF}
end;
Ist das nicht schön wie einfach und leicht nachvollziehbar es ist eine Datei zu teilen oder ein Dokument zu öffnen?
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (17. Jan 2024 um 10:48 Uhr)
  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 13:12 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