Delphi-Android-将文本文件保存到内部存储

问题描述

我刚接触Android开发。 我想开发一个应用程序,它能够将文本文件保存在内部存储中(在应用程序的专用文件夹中)。

我有以下代码

    procedure TfrmMain.Button1Click(Sender: TObject);
    var
      tstrTmp: TStringList;
      sFn: String;
    begin
      tstrTmp := TStringList.Create;
      tstrTmp.Text := 'Test';
      sFn := Format( '%s/Test.txt',[GetHomePath ]);
      sFn := System.IoUtils.TPath.GetDocumentsPath + System.SysUtils.PathDelim + 'Test.txt';
      sFn := TPath.Combine( System.IoUtils.TPath.GetDocumentsPath,'Test.txt' );
      tstrTmp.SavetoFile( sFn );
      tstrTmp.Free;
      showmessage( sFn );
    end;

当我运行该应用程序并单击该按钮时,它向我显示:“ / data / user / 0 / com.embarcadero。[MyAppName] /files/Test.txt”。 因此,我认为该文件已物理写入该位置。

但是当我将设备连接到PC时,我什至找不到该文件夹​​。 我也搜索了外部存储,但找不到该文件夹​​或文件(Test.txt)。

我确实在内部存储中找到了一个文件夹:/Android/data/com.embarcadero。[MyAppName]/files,但其中没有文件

所以,我有点卡在这里,因为我假设文件保存在某个地方。 但是我找不到它。

在这里做错什么了吗? 感谢您的反馈。

最好的问候

威姆。

解决方法

因此,解决方案是: 设置用于存储的应用程序权限(设置-应用程序-MyApp-权限-存储空间)。

完成此操作后,使用TPath.GetPublicPath将文件存储在设备(内部存储)上的文件中:/ storage / emulated / 0 / Android / data // files 其中'/ storage / emulated / 0'=设备内部存储的根文件夹。

,

如果您担心设备之间的内部根路径是否发生变化,您可以试试这个

AppPath := ReplaceStr(System.IOUtils.TPath.GetSharedDownloadsPath,'/Download','');

会给你你想要的东西,所以你不必担心它是“/storage/emulated/0”还是别的什么。