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?