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
Antwort Antwort
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 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
beginnerXE1

Registriert seit: 22. Dez 2020
10 Beiträge
 
#2

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

  Alt 31. Dez 2020, 14:23
Hast du die Mail-App vorher einmal gestartet, damit diese Zugriff auf den Speicher erhält?
Laut einigen Internetseiten gab es da ab Android 7 erst Änderungen und vorher kann es zu solchen Problemen kommen, weil sie nicht automatisch danach fragt. Leider finde ich die Quelle dazu gerade nicht mehr.

Hier https://en.delphipraxis.net/topic/13...ll-a-tjintent/ lief die App zwar noch mit Android 6, aber später nicht mehr, weil der FileProvider fehlte. Vielleicht kannst du aber aus der Lösung noch ableiten, warum es dort dann mit beiden Versionen funktionierte.
  Mit Zitat antworten Zitat
QuickAndDirty

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

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

  Alt 1. Jan 2021, 02:30
Mit Android 7-10 geht es. Ich nutze ja den Fileprovider und die sichere Dateifreigabe.
Mit Android 6 geht es nicht...
Ich guck mir noch eben den Link an. Und sag nach den feiertagen bescheid
Andreas
Monads? Wtf are Monads?
  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 13:21 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