gpt4 book ai didi

android-download-manager - Android 6 获取下载文件的路径

转载 作者:行者123 更新时间:2023-12-04 08:44:14 26 4
gpt4 key购买 nike

我的应用程序 (Xamarin C#) 我们从服务器下载文件。在成功下载结束时,我们将获得新下载文件的 URI,并从 URI 中获得文件路径:

Android.Net.Uri uri = downloadManager.GetUriForDownloadedFile(entry.Value);
path = u.EncodedPath;

在 Android 4.4.2 和 Android 5 中 uri 路径 看起来像这样:
uri="file:///storage/emulated/0/Download/2.zip"
path = u.EncodedPath ="/storage/emulated/0/Download/2.zip"

然后我们使用 路径 来处理文件。
问题是在 Android 6(在真正的 Nexus 手机上)我们得到了一个完全不同的 uri 路径 :
uri="content://downloads/my_downloads/2802"
path="/my_downloads/2802"

这通过抛出 FileNotFound 异常破坏了我的代码。请注意,下载的文件存在并且位于下载文件夹中。
如何使用从 Android 6 获得的 URI 来获取正确的文件路径,以便我可以访问该文件并对其进行处理?

谢谢,
donescamillo@gmail.com

最佳答案

我没有得到您的实际要求,但您似乎想处理文件内容。如果是这样,可以通过使用下载文件的文件描述符读取文件内容来完成。代码片段为

    ParcelFileDescriptor parcelFd = null;
try {
parcelFd = mDownloadManager.openDownloadedFile(downloadId);
FileInputStream fileInputStream = new FileInputStream(parcelFd.getFileDescriptor());
} catch (FileNotFoundException e) {
Log.w(TAG, "Error in opening file: " + e.getMessage(), e);
} finally {
if(parcelFd != null) {
try {
parcelFd.close();
} catch (IOException e) {
}
}
}

但我也希望在处理后移动或删除该文件。

关于android-download-manager - Android 6 获取下载文件的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33315849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com