【问题标题】:How can I find specific files on an Android device with Firemonkey?如何使用 Firemonkey 在 Android 设备上查找特定文件?
【发布时间】:2017-01-26 05:46:41
【问题描述】:

我正在使用 Firemonkey (Delphi XE6) 开发一个基本的 MP3 播放器 Android 应用程序,其中 MP3 文件将在安装后添加到 SD 卡(外部)中。因此,一旦用户在他们的设备上激活/打开了应用程序,我需要我的应用程序能够搜索这些特定的 MP3 文件。

文件搜索的代码很好,但我的问题是在 SD 卡上保存文件的位置以及如何在代码中找到文件夹/目录位置。

这个概念应该很简单,但 Firemonkey (似乎)使这比想象的要困难得多。

这是我的文件搜索代码:

var
sr : TSearchRec;
i : Integer;
Storage : String;
begin
  //List files found on SD Card on device only, for now
  Storage := TPath.Combine(TPath.GetMusicPath, '*.mp3');
  if FindFirst(Storage, faAnyfile, sr) = 0 then
    begin
      repeat
        listSessions.Items.Add(sr.Name);
      until FindNext(sr) <> 0;
    end;
  FindClose(sr);
 end;

我只想知道,为了爱所有美好而纯洁的事物,我应该在哪里搜索?上面的位置没有提供任何乐趣,也不是通用的 GetMusicPath 结果。我不能真正对目录路径进行硬编码,因为那样它只能在一个 android 设备上工作。我需要它在所有 android 设备上通用。

TPath.GetDocumentsPath、TPAth.GetMusicPath 和所有其他类似的工具都能让我找到各种被上帝遗忘的位置,我什至在文件资源管理器中都找不到。例如,我的“通用”音乐位置(这是我想要使用的)返回此路径:/storage/emulated/0/Android/data/com.embarcadero./files/Music。

我做错了吗?

【问题讨论】:

    标签: firemonkey delphi-xe6


    【解决方案1】:

    帮助文件的建议是——使用这个:

    shStorage := TPath.Combine(TPath.GetSharedMusicPath, '*.mp3');

    但是,这只是将其置于模拟路径中的更高级别...

    即/storage/emulated/0/音乐

    获取 ESExplorer 并查看内部存储——音乐文件夹将包含使用上述文件的文件...

    否则它会出现在: /storage/emulated/o/Android/data/com.Your_Domain_ID.YOURPROGID/files/Music

    希望对寻找此信息的人有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      相关资源
      最近更新 更多