AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi Teilen in Android 10 funktioniert. In Android 6 leider nicht. Warum?
Thema durchsuchen
Ansicht
Themen-Optionen

Teilen in Android 10 funktioniert. In Android 6 leider nicht. Warum?

Ein Thema von QuickAndDirty · begonnen am 30. Dez 2020 · letzter Beitrag vom 1. Jan 2021
 
QuickAndDirty

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

Teilen in Android 10 funktioniert. In Android 6 leider nicht. Warum?

  Alt 30. Dez 2020, 11:50
Der Code funktioniert unter Android 10.
Er öffnet den FileChooser und zeigt eine Auswahl an Messenger und Mail Programmen.
Wenn ich googlmail antippe wird die Datei im Anhang des Email Formulars verschickt.

Der Code funktioniert nicht unter Android 6
Er öffnet den Filechooser und zeigt eine Auswahl an Messenger und Mail Programmen.
Wenn ich googlmail oder Sonymail antippe wird der Dateipfad im absender angezeigt aber kein Anhang bereit gestellt,
weil es keine Berechtigung auf den Pfad der Datei gibt.
Außerdem wird der URI pfad als Adressat im Mailprogramm eingetragen....

Im delphi-projekt ist Berechtigung für "Sichere Dateifraigabe" angehakt.
Und es funktioniert ja unter Android 10, also alles notwendige dafür ist getan.

Was muss ich machen damit der Code auch unter Android 6 funktioniert?

Delphi-Quellcode:
unit Android.FileProviderService;

interface
uses
    System.SysUtils
  , System.ioutils
{$IFDEF ANDROID}
  , Androidapi.JNI.Os
  , Androidapi.JNI.GraphicsContentViewText
  , Androidapi.JNI.JavaTypes
  , Androidapi.Helpers
  , Androidapi.JNI.Net
  , Androidapi.JNI.Webkit
  , Androidapi.JNIBridge
{$ENDIF}
  ;

type

TFileProviderService = Class
public
  Class procedure SendFileToChooser(file_name: string);
End;

implementation

Class procedure TFileProviderService.SendFileToChooser(file_name: string);
{$IFDEF ANDROID}
var
  theFile: JFile;
  Intent: JIntent;
  FileURI:JNet_URI;
  ParcelURI:JParcelable;
{$ENDIF}
begin
{$IFDEF ANDROID}
  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);
  SharedActivity.startActivity(TJIntent.JavaClass.createChooser(intent, StrToJCharSequence ('Share With')));
{$ENDIF}
end;
file_name ist quasi:
file_name := TPath.Combine(TPath.GetHomePath, 'logdatei_Email_Kopie.log'); Die Datei existiert und ist nicht geöffnet.
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (30. Dez 2020 um 11:58 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 21:41 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