【问题标题】:Download file in xamarin forms on android emulator在 android 模拟器上以 xamarin 形式下载文件
【发布时间】:2020-07-19 14:30:32
【问题描述】:

我正在尝试从服务器下载文件。下载后,我没有收到任何错误,所以我认为该文件已下载,但我在任何文件夹中都找不到它。是因为安卓模拟器吗?我目前使用的是 Android 9.0 API 28。

public void DownloadFile(string url, string cookie)
{
  string pathToFolder-Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
  try
  {
    WebClient webClient=new WebClient();
    InitiatesSSLTrust();
    webClient.Headers.Add(HttpRequestHeader.Cookie, "JSESSIONID="+cookie);
    webclient.DownloadFileCompleted+=new AsyncCompletedEventHandler(Completed);
    string pathToNewFile=Path.Combine(pathToFolder, "plik.pdf");
    webClient.DownloadFileAsync(new Uri(url), pathToNewFile);
  }
  catch (Exception e)
  {
    if(OnFileDownloaded != null)
    {
      OnFileDownloaded.Invoke(this, new DownloadEventArgs(false));
    }
  }
}

【问题讨论】:

  • 你需要使用adb从模拟器文件系统中复制文件
  • 据我所知Environment.SpecialFolder.MyDocuments 是应用程序私有的。
  • 你没有例外?您是否收到要求访问该文件夹的权限的对话框?下载时应用程序输出说明了什么?您可以看到这个项目使用 MyDocuments 存储 TXT 文件 github.com/nathanvmag/NaveApp/blob/… 以及 Android 清单中的 INTERNET、WRITE_EXTERNAL_STORAGE 和 READ_EXTERNAL_STORAGE 权限?

标签: android xamarin xamarin.android android-emulator


【解决方案1】:

string pathToFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

路径会喜欢

"/data/user/0/packagename/files/plik.pdf"

保存到Internal Storage时,没有root权限是看不到文件的,如果要查看,可以使用adb工具(Android Debug签名的应用)

adb shell
run-as packagename
cd /data/data/packagename
cd files
ls

然后你可以看到plik.pdf

或者你可以将它保存到External storage,然后你可以在你的设备文件管理器中找到它:

//"/storage/emulated/0/Android/data/packagename/files/plik.pdf"
string path = Android.App.Application.Context.GetExternalFilesDir(null).ToString();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 2020-05-29
    相关资源
    最近更新 更多