指定将文件从Android传输到Windows PC的文件路径是什么?

时间:2015-04-27 10:42:51

标签: c# android mtp wpd

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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