Bueno. Ya estoy aquí.
Te cuento.
He bajado y descomprimido el archivo al que apunta el link de Embarcadero.
Sólo venían 3 archivos: Androidapi.IOUtilsEx.pas (que es la unidad principal), Androidapi.JNI.EnvIntf.pas y Androidapi.JNI.SystemIntf.pas (usados por la unidad principal).
Además, en su cláusula
uses vienen otros cuantos:
Código Delphi
[-]
implementation
uses
System.SysUtils,
Androidapi.Jni,
Androidapi.JNIBridge,
Androidapi.JNI.JavaTypes,
Androidapi.Helpers,
Androidapi.JNI.SystemIntf,
Androidapi.JNI.EnvIntf;
Puesto que para compilarse los necesita todos, he copiado los que faltaban desde el directorio
C:\RadStudio10\17.0\source\rtl\android
He creado un proyecto nuevo
Código Delphi
[-]
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.Controls.Presentation, Androidapi.IOUtilsEx;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
begin
if isExternalStorageWritable
then Label1.Text := GetExternalSDCardDirectory
else ShowMessage('No hay SD card');
end;
end.
Al pulsar el Button1 me da el bonito mensaje de
"Access violation" en dos dispositivos que lo he probado, en los mismos que con las rutas que anteriormente os he comentado, funcionaban.
No sé si es que la unidad está escrita para otra versión de Delphi o qué pasa.
Te agradezco tu esfuerzo, jhonny, pero creo que no voy a perder más tiempo con este asunto.
Gracias de verdad.
Saludos a todos.