Recent

Author Topic: jSaveDialog  (Read 409 times)

biologic

  • New member
  • *
  • Posts: 8
jSaveDialog
« on: February 08, 2025, 05:01:09 pm »

Is there something like a jSaveDialog available ?

To select a filename to save a file.

Like jOpenDialog.

Joris

  • Newbie
  • Posts: 2
Re: jSaveDialog
« Reply #1 on: February 23, 2025, 09:05:59 pm »
Normally on Android you would use the ACTION_CREATE_DOCUMENT intent to save a file. I have no idea how to do this from Pascal however, Copilot gave me this example:

Code: [Select]
uses
  AndroidWidget, actionbardetails, dialogdetails, ..., // import necessary LAMW units
  AndroidWidget.LamwConsts; // import LamwConsts for ACTION_CREATE_DOCUMENT

procedure TAndroidModule1.StartCreateDocument;
var
  intent: JIntent;
begin
  intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_CREATE_DOCUMENT);
  intent.setType(StringToJString('text/plain')); // You can set other MIME types as needed
  intent.putExtra(TJIntent.JavaClass.EXTRA_TITLE, StringToJString('example.txt'));
  jActivity.startActivityForResult(intent, CREATE_DOCUMENT_REQUEST_CODE); // Use your request code
end;

procedure TAndroidModule1.jActivityActivityResultRequestCodeResultCodeData(requestCode: integer; resultCode: integer; intentData: jObject);
var
  outputStream: JFileOutputStream;
  uri: Jnet_Uri;
begin
  if requestCode = CREATE_DOCUMENT_REQUEST_CODE then
  begin
    if resultCode = TJActivity.JavaClass.RESULT_OK then
    begin
      uri := TJnet_Uri.Wrap((intentData as JIntent).getData);
      outputStream := jContentResolver.openOutputStream(uri);
      try
        outputStream.write(StringToJString('Hello World').getBytes);
        outputStream.flush;
      finally
        outputStream.close;
      end;
    end;
  end;
end;

procedure TAndroidModule1.ButtonCreateDocumentClick(Sender: TObject);
begin
  StartCreateDocument;
end;

jmpessoa

  • Hero Member
  • *****
  • Posts: 2327
Re: jSaveDialog
« Reply #2 on: February 23, 2025, 10:08:03 pm »

Quote
Is there something like a jSaveDialog available ?

You can try LAMW demo "AppPublicFoldersAccessDemo1"
Lamw: Lazarus Android Module Wizard
https://github.com/jmpessoa/lazandroidmodulewizard

 

TinyPortal © 2005-2018