Как правильно отправлять файлы через ACTION_SEND. То что пробовал и не смог заставить работать:
uses System.IOUtils, FMX.Helpers.Android,Androidapi.JNI.JavaTypes, Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText;
procedure TMain.SendFileClick(Sender: TObject);
var
Intent: JIntent;
begin
Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
Intent.setDataAndType(StrToJURI('file:' + TPath.Combine(TPath.GetSharedDownloadsPath, 'picture.png')), StringToJString ('image/png'));
SharedActivity.startActivity(Intent);
end;
или
var
Intent: JIntent;
begin
Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
Intent.setType(StringToJString('image/png'));
Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM , StringToJString('file:mnt/sdcard/pictures/1.png'));
SharedActivity.startActivity(Intent);
При чем с открытием(ACTION_VIEW) все в порядке:
var
FileName, ExtFile: string;
mime: JMimeTypeMap;
ExtToMime: JString;
Intent: JIntent;
pathN:string;
begin
FileName := Item.ItemData.Detail;
try
ExtFile := AnsiLowerCase(StringReplace(TPath.GetExtension(FileName), '.', '',[]));
mime := TJMimeTypeMap.JavaClass.getSingleton();
ExtToMime := mime.getMimeTypeFromExtension(StringToJString(ExtFile));
Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
Intent.setDataAndType(StrToJURI('file:' + FileName), ExtToMime);
SharedActivity.startActivity(Intent);
except
ShowMessage('Невозможно открыть файл!');
end
end;
Хоть в моих примерах я и пытаюсь передать изображение (я в курсе, что в ActionList есть стандартное действие для отправки изображений), в итоге код будет использоваться для файлов любого типа.
Как победить?