c# - 如何管理 MTP 可移植设备上的文件?

标签 c# android mtp

我已经研究这个主题好几天了,但我找不到任何关于在 MTP 可移植设备(更具体地说是 Galaxy S4)上管理文件的信息。

我希望能够...

  • 将文件从 PC 复制到 MTP 设备
  • 将文件从 MTP 设备复制到 PC
  • 从 MTP 设备中删除文件

我真的很想复制 MP3 文件,但如果有一种通用的方法可以复制并获得 MTP 支持的文件,那就太棒了。我查看了 Window Portable Device API,但找不到任何包含 C# 示例代码的地方。

任何博客、示例代码和文件都会非常有帮助。谢谢! :)

最佳答案

我使用了一个名为 MediaDevices 的 nugetpackage

这让我可以非常轻松地将我的照片从我的 Android 手机复制到我的电脑。

 public class Program
{
    static void Main(string[] args)
    {
        var devices = MediaDevice.GetDevices();
        using (var device = devices.First(d => d.FriendlyName == "Galaxy Note8"))
        {
            device.Connect();
            var photoDir = device.GetDirectoryInfo(@"\Phone\DCIM\Camera");

            var files = photoDir.EnumerateFiles("*.*", SearchOption.AllDirectories);

            foreach (var file in files)
            {
                MemoryStream memoryStream = new System.IO.MemoryStream();
                device.DownloadFile(file.FullName, memoryStream);
                memoryStream.Position = 0;
                WriteSreamToDisk($@"D:\PHOTOS\{file.Name}", memoryStream);
            }
            device.Disconnect();
        }

    }

    static void WriteSreamToDisk(string filePath, MemoryStream memoryStream)
    {
        using (FileStream file = new FileStream(filePath, FileMode.Create, System.IO.FileAccess.Write))
        {
            byte[] bytes = new byte[memoryStream.Length];
            memoryStream.Read(bytes, 0, (int)memoryStream.Length);
            file.Write(bytes, 0, bytes.Length);
            memoryStream.Close();
        }
    }
}

关于c# - 如何管理 MTP 可移植设备上的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18512737/

相关文章:

c# - 更改 WPF DatePicker 文本框的外观

c# - Microsoft 云服务/辅助角色部署 - 未找到方法?

java - 如何更改应用程序 :elevation programmatically

android - 在 Android Kiosk 应用程序上显示 USB 权限对话框?

c# - Rx DelayOnTrue 扩展实现

C# - Json.NET - 继承序列化

android - 切换案例中的 Activity 上下文

java - 尝试在服务和另一个类之间 bundle 额外内容时出现 NullPointerException

android - 无法将 ADB 连接到 Android Marshmallow (6.0.1)

android - 如何将 Android M 默认 USB 配置设置为 MTP 而不是 "charging only"?