5

我将创建一个 c# windows 应用程序,用于将图像文件从 android 手机传输到我的 Wondows PC - 当我将手机与我的 PC 连接时(使用数据线)。当我在 C# 中给出路径“Computer/Nuxes5/...”以从移动设备访问文件时,(从 Windows 资源管理器地址栏中获取)。然后得到不正确的路径。以下是我提供的用于访问文件的代码。

Directory.GetFiles(@"Computer/Nuxes5/...");

任何人都可以建议我,如何使用 C# 访问移动文件。

4

1 回答 1

1

您需要使用 MTP 文件传输。由于您使用的是 Windows,因此最好将 COM 与 Windows PortableDeviceApiLib 库一起使用。这不是一件容易的事。上述评论之一中的 WPD API 链接是一个很好的参考。

您还应该安装Microsoft MTP Simulator 3.0并查看随附的示例代码。

在 MTP 中,存储在设备上的每个文件或文件夹都是一个带有句柄的对象。要检索文件或文件夹,您必须检索对象句柄,然后通过检查其 objectFormatCode 属性来检查它是文件还是文件夹。文件夹的对象格式代码设置为 0x3001。您可以从MTP Spec获取整个列表。

设置 WPD/PTP 包装器后,您可以开始向设备发送 MTP 命令。要从设备获取文件,过程如下。

  1. 通过调用 getStorageIds() 获取可用的存储 ID;
  2. 对于您感兴趣的存储 ID(内部存储/SD 卡),调用 getObjectHandles() 以获取所有文件/文件夹的列表。
  3. 循环遍历根文件夹句柄以查找您感兴趣的文件。对于您获得的每个句柄,调用 getObjectInfo() 以获取有关该句柄的详细信息。
  4. 一旦有了名称和格式代码与您要查找的句柄相匹配的句柄,就调用 getObject() 函数下载文件。

另请记住,您不能同时下载所有内容。您必须为需要下载的每个文件句柄调用 getObject()。

于 2015-10-12T15:43:06.777 回答