簡體   English   中英

無法從 Android 上的下載文件夾中讀取文件

[英]Cannot read a file from Downloads folder on Android

我有帶有自定義擴展名的文本文件。 我已經將我的 Delphi FMX 應用程序部署到 Documents 文件夾中,並且使用TStringList.LoadFromFile(Path)可以正常加載。 路徑是:

/data/user/0/com.embarcadero.[appname]/files/[filename]

然后我嘗試從以下路徑加載文件:

/storage/emulated/0/Download/[filename]

FileExists(Path)返回 true,表示文件確實存在。 但是,它在TStringList.LoadFromFile(Path)中失敗。

我認為這是一些權限問題。 但是,我已經在“使用權限”下的 Delphi 項目選項中檢查了“讀取外部存儲”是否已啟用,因此清單應該包含它。 此位置是否需要任何其他權限設置?

請注意,我正在使用 Android 8 在華為 P10 上進行測試。

根據 Object Pascal/Mobile Snippets/CameraRoll 示例,在對 ReadExternalStorage 使用 PermissionService.RequestPermissions 后加載文件。

  {$IF DEFINED (ANDROID)}
  var FStorage := '/storage/emulated/0/RAH Download';
  {$ELSEIF DEFINED (MSWINDOWS)}
  var FStorage := ExpandFileName(GetCurrentDir) + PathDelim + 'Download';
  {$ELSE}
  ShowMessage('Not Support';
  Exit;
  {$ENDIF}

  if not DirectoryExists(FStorage) then begin
    if not CreateDir(FStorage) then
      Exit;
  end;

==================================================== =========

  var HTTP := TNetHTTPClient.Create(nil);
  try
    var Stream := TMemoryStream.Create;
    try
      HTTP.Get(FURL, Stream);
      Stream.SaveToFile(FStorage + Pathdelime + 'FileName');
    finally
      Stream.DisposeOf;
    end;
  finally
    HTTP.DisposeOf;
  end;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM