Для передачи файлов через MTP с помощью c #:
Загрузите этот пакет NuGet: PortableDevices
Добавить ссылки на эти 4 библиотеки COM:
- PortableDeviceClassExtension
- PortableDeviceConnectApi
- PortableDeviceTypes
- PortableDeviceApi
Возьмите dll под obj\Debug
и поместите их в bin\Debug
:
- Interop.PortableDeviceClassExtension.dll
- Interop.PortableDeviceConnectApiLib.dll
- Interop.PortableDeviceTypesLib.dll
- Interop.PortableDeviceApiLib.dll
Теперь вы можете использовать следующую функцию для отображения списка всех устройств, хотя FriendlyName
не работает (возвращает пустую строку):
private IDictionary<string, string> GetDeviceIds()
{
var deviceIds = new Dictionary<string, string>();
var devices = new PortableDeviceCollection();
devices.Refresh();
foreach (var device in devices)
{
device.Connect();
deviceIds.Add(device.FriendlyName, device.DeviceId);
Console.WriteLine(@"DeviceId: {0}, FriendlyName: {1}", device.DeviceId, device.FriendlyName);
device.Disconnect();
}
return deviceIds;
}
Следующим шагом является получение содержимого с устройства, что делается следующим образом:
var contents = device.GetContents();