Какой путь к файлу указать для передачи файла с Android на ПК с Windows?
Я собираюсь создать приложение C# windows для передачи файла изображения с телефона Android на мой компьютер Wondows - когда я подключаю телефон к компьютеру (используя кабель для передачи данных). Когда я дал путь "Компьютер /Nuxes5/..." в C# для доступа к файлам с мобильного телефона (получен из адресной строки Windows Explorer). Тогда получается неверный путь. Ниже приведен код, который я дал для доступа к файлам.
Directory.GetFiles(@"Computer/Nuxes5/...");
Кто-нибудь может подсказать, пожалуйста, как получить доступ к мобильным файлам с помощью C#.
1 ответ
Вам нужно использовать передачу файлов MTP. Поскольку вы используете Windows, лучше всего использовать COM с библиотекой Windows PortableDeviceApiLib. Это не простая задача. Ссылка на API WPD в одном из приведенных выше комментариев является хорошей ссылкой.
Вам также следует установить Microsoft MTP Simulator 3.0 и посмотреть пример кода, который поставляется с ним.
В MTP каждый файл или папка, хранящиеся на устройстве, являются объектом с дескриптором. Чтобы получить файл или папку, вы должны получить дескриптор объекта, а затем проверить, является ли он файлом или папкой, проверив его свойство objectFormatCode. Папки имеют код формата объекта, установленный на 0x3001. Вы можете получить весь список из MTP Spec.
После настройки оболочки WPD/PTP вы можете начать отправлять команды MTP на устройство. Для получения файлов с устройства выполните следующую процедуру.
- Получить доступные идентификаторы хранилища, вызвав getStorageIds();
- Для идентификатора хранилища, который вас интересует (внутреннее хранилище /SD-карта), вызовите getObjectHandles(), чтобы получить список всех файлов / папок.
- Прокрутите дескриптор корневой папки, чтобы найти интересующий вас файл. Для каждого полученного вами дескриптора вызовите getObjectInfo(), чтобы получить подробную информацию об этом дескрипторе.
- Если у вас есть дескриптор, имя и код формата которого совпадают с тем, что вы ищете, вызовите функцию getObject(), чтобы загрузить файл.
Также помните, что вы не можете загрузить все содержимое одновременно. Вы должны вызывать getObject() для каждого дескриптора файла, который вам нужно скачать.