Recent

Author Topic: filename from Uri  (Read 262 times)

biologic

  • New Member
  • *
  • Posts: 17
filename from Uri
« on: March 22, 2025, 06:56:01 am »
How can I get the filename of a treeUri object?

I want to load a BGRABitmap with the data of the chosen file.

Code: Pascal  [Select][+][-]
  1. procedure TAndroidModule1.AndroidModule1ActivityResult(Sender: TObject;
  2.   requestCode: integer; resultCode: TAndroidResult; intentData: jObject);
  3. var
  4.   treeUri: jObject;
  5.   arrayData: TDynArrayOfString;
  6.   listData: TstringList;
  7.   count, i: integer;
  8.   contentText: string;
  9.  
  10.   outFileName, outUriValue: string;
  11. begin
  12.    if resultCode = RESULT_OK then
  13.    begin
  14.  
  15.       if intentData = nil then
  16.       begin
  17.          ShowMessage('Sorry... data nil received...');
  18.          Exit;
  19.       end;
  20.  
  21.       treeUri:= IntentManager1.GetDataUri(intentData);
  22.  
  23.       //ShowMessage('dataUri = ' + IntentManager1.GetDataUriAsString(intentData) );
  24.  
  25.       if treeUri = nil then
  26.       begin
  27.          ShowMessage('Sorry... Uri nil received...');
  28.          Exit;
  29.       end;
  30.  
  31. //      ShowMessage('treeUri =' +Self.UriToString(treeUri));
  32.  
  33.       //Self.TakePersistableUriPermission(treeUri); //so, you don't need a new request for user when app resume from background
  34.  
  35.       if requestCode = 111 then  //create file
  36.       begin
  37.          ShowMessage('Success! Created File!');
  38.  
  39.          //Add content...
  40.          Self.SaveTextToUri('1. Hello Android 11 World!' + sLineBreak, treeUri);
  41.       end;
  42.  
  43.       if requestCode = 222 then  //open file
  44.       begin
  45.  
  46.          ShowMessage('Success! Open File!');
  47.  
  48.          //contentText:= Self.GetTextFromUri(treeUri); //get content
  49.          //ShowMessage(contentText);
  50.  
  51.          //Add content..
  52.          //Self.SaveTextToUri(contentText + '2. New Text Content!' + sLineBreak , treeUri);
  53.  
  54.  
  55.          // or....
  56.          //IntentManager1.SetAction(iaView);
  57.          //IntentManager1.SetDataAndType(treeUri, 'text/plain');
  58.          //IntentManager1.StartActivity();
  59.  
  60.          //or if mimetype is "image/*"
  61.          ImageView1.SetImage(Self.GetBitmapFromUri(treeUri));
  62.  
  63.          width:=imageview1.GetBitmapWidth;
  64.          height:=imageview1.GetBitmapHeight;
  65.  
  66.          bmp := TBGRABitmap.Create(width, Height);
  67.          bmp.LoadFromFile(Self.UriToString(treeUri));
  68.          //ShowMessage('LoadFromFile : treeUri =' +Self.UriToString(treeUri));
  69.  
  70.          Self.Refresh;          
  71.  
  72.          //or
  73.          //IntentManager1.SetAction(iaView);
  74.          //IntentManager1.SetDataAndType(treeUri, 'image/*');
  75.          //IntentManager1.StartActivity();
  76.  
  77.       end;
  78.  
  79.       if requestCode = 333 then  //open directory tree
  80.       begin
  81.  
  82.         arrayData:= Self.GetFileList(treeUri, '.txt'); //filter by file extension
  83.  
  84.         //or
  85.         //arrayData:= Self.GetFileList(treeUri); // no filter
  86.  
  87.         listData:= Self.ToStringList(arrayData, ' ');
  88.  
  89.         count:= listData.Count;
  90.         for i:= 0 to count-1 do
  91.         begin
  92.           listData.GetNameValue(i , outFileName, outUriValue);
  93.           //ListView1.Add(outFileName);
  94.           //ListView1.SetItemTagString(outUriValue, i); //hiden information
  95.         end;
  96.  
  97.         SetLength(arrayData, 0);
  98.         listData.Free;
  99.  
  100.       end;
  101.    end;
  102. end;    
  103.  

biologic

  • New Member
  • *
  • Posts: 17
Re: filename from Uri
« Reply #1 on: March 23, 2025, 01:45:44 am »
OK,

Found a solution :

function GetBitmapFromUri


 

TinyPortal © 2005-2018