procedure TAndroidModule1.AndroidModule1ActivityResult(Sender: TObject;
requestCode: integer; resultCode: TAndroidResult; intentData: jObject);
var
treeUri: jObject;
arrayData: TDynArrayOfString;
listData: TstringList;
count, i: integer;
contentText: string;
outFileName, outUriValue: string;
begin
if resultCode = RESULT_OK then
begin
if intentData = nil then
begin
ShowMessage('Sorry... data nil received...');
Exit;
end;
treeUri:= IntentManager1.GetDataUri(intentData);
//ShowMessage('dataUri = ' + IntentManager1.GetDataUriAsString(intentData) );
if treeUri = nil then
begin
ShowMessage('Sorry... Uri nil received...');
Exit;
end;
// ShowMessage('treeUri =' +Self.UriToString(treeUri));
//Self.TakePersistableUriPermission(treeUri); //so, you don't need a new request for user when app resume from background
if requestCode = 111 then //create file
begin
ShowMessage('Success! Created File!');
//Add content...
Self.SaveTextToUri('1. Hello Android 11 World!' + sLineBreak, treeUri);
end;
if requestCode = 222 then //open file
begin
ShowMessage('Success! Open File!');
//contentText:= Self.GetTextFromUri(treeUri); //get content
//ShowMessage(contentText);
//Add content..
//Self.SaveTextToUri(contentText + '2. New Text Content!' + sLineBreak , treeUri);
// or....
//IntentManager1.SetAction(iaView);
//IntentManager1.SetDataAndType(treeUri, 'text/plain');
//IntentManager1.StartActivity();
//or if mimetype is "image/*"
ImageView1.SetImage(Self.GetBitmapFromUri(treeUri));
width:=imageview1.GetBitmapWidth;
height:=imageview1.GetBitmapHeight;
bmp := TBGRABitmap.Create(width, Height);
bmp.LoadFromFile(Self.UriToString(treeUri));
//ShowMessage('LoadFromFile : treeUri =' +Self.UriToString(treeUri));
Self.Refresh;
//or
//IntentManager1.SetAction(iaView);
//IntentManager1.SetDataAndType(treeUri, 'image/*');
//IntentManager1.StartActivity();
end;
if requestCode = 333 then //open directory tree
begin
arrayData:= Self.GetFileList(treeUri, '.txt'); //filter by file extension
//or
//arrayData:= Self.GetFileList(treeUri); // no filter
listData:= Self.ToStringList(arrayData, ' ');
count:= listData.Count;
for i:= 0 to count-1 do
begin
listData.GetNameValue(i , outFileName, outUriValue);
//ListView1.Add(outFileName);
//ListView1.SetItemTagString(outUriValue, i); //hiden information
end;
SetLength(arrayData, 0);
listData.Free;
end;
end;
end;