我正在尝试使用C#制作的Windows应用程序将文件传输到android MTP设备。 如何在Windows应用中的MTP设备上创建文件夹?
我正在使用WPD API,并且成功将文件发送到MTP设备。
var WPD_OBJECT_PARENT_ID = new _tagpropertykey();
WPD_OBJECT_PARENT_ID.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C);
WPD_OBJECT_PARENT_ID.pid = 3 ;
我阅读了PortableDevices API中的上述代码。 我现在不知道GUID是什么意思。
我认为api将支持创建文件夹的功能。 但是,但是api仅支持读取,写入和删除文件。
如何在MTP设备上创建跟踪器? 或者,是否有适用于mtp设备的C#API?
答案 0 :(得分:0)
我提到了用C ++编写的便携式设备代码。 创建文件夹需要三个键。
WPD_OBJECT_CONTENT_TYPE = WPD_CONTENT_TYPE_FOLDER
WPD_OBJECT_PARENT_ID
WPD_OBJECT_NAME
public void createFolder(string folderName, string parentObjectId)
{
IPortableDeviceContent content;
this._device.Content(out content);
string objectID = null;
IPortableDeviceValues values = GetRequiredPropertiesForFolderType(folderName, parentObjectId);
content.CreateObjectWithPropertiesOnly(values, objectID);
}
private IPortableDeviceValues GetRequiredPropertiesForFolderType(string folderName, string parentObjectId)
{
IPortableDeviceValues values = new PortableDeviceTypesLib.PortableDeviceValues() as IPortableDeviceValues;
//type
var WPD_OBJECT_CONTENT_TYPE = new _tagpropertykey();
WPD_OBJECT_CONTENT_TYPE.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C);
WPD_OBJECT_CONTENT_TYPE.pid = 7;
var WPD_CONTENT_TYPE_FOLDER = new _tagpropertykey();
WPD_CONTENT_TYPE_FOLDER.fmtid = new Guid(0x27E2E392, 0xA111, 0x48E0, 0xAB, 0x0C, 0xE1, 0x77, 0x05, 0xA0, 0x5F, 0x85);
values.SetGuidValue(ref WPD_OBJECT_CONTENT_TYPE, WPD_CONTENT_TYPE_FOLDER.fmtid);
var WPD_OBJECT_PARENT_ID = new _tagpropertykey();
WPD_OBJECT_PARENT_ID.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C);
WPD_OBJECT_PARENT_ID.pid = 3;
values.SetStringValue(ref WPD_OBJECT_PARENT_ID, parentObjectId);
//name
var WPD_OBJECT_NAME = new _tagpropertykey();
WPD_OBJECT_NAME.fmtid = new Guid(0xEF6B490D, 0x5CD8, 0x437A, 0xAF, 0xFC, 0xDA, 0x8B, 0x60, 0xEE, 0x4A, 0x3C);
WPD_OBJECT_NAME.pid = 4;
values.SetStringValue(WPD_OBJECT_NAME, folderName);
return values;
}