From 21bbab062abeb5756b115b2bfedd0582530ad3ed Mon Sep 17 00:00:00 2001 From: shuzhouhao Date: Wed, 24 Aug 2022 10:25:33 +0800 Subject: [PATCH 1/3] =?UTF-8?q?mtp=E6=8E=A5=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: shuzhouhao --- .../FileExtensionAbility.ts | 14 ++++++-- .../ets/FileExtensionAbility/Subcriber.ts | 6 +++- .../ets/FileExtensionAbility/VolumeManager.ts | 34 ++++++++++++++----- 3 files changed, 43 insertions(+), 11 deletions(-) diff --git a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts index 680e6b0e..0a2abf53 100644 --- a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts +++ b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts @@ -38,7 +38,7 @@ export default class FileExtAbility extends Extension { onCreate(want) { init(); onReceiveEvent(function (data) { - if (data.event == 'usual.event.data.VOLUME_MOUNTED') { + if (data.event == 'usual.event.data.VOLUME_MOUNTED' || data.event == 'usual.event.data.MTPDEV_MOUNTED_SUCCESSED') { if (callbackFun != null) { let uri = path2uri('', data.parameters.path); callbackFun(data.parameters.type, NotifyType.DEVICE_ONLINE, uri); @@ -167,6 +167,16 @@ export default class FileExtAbility extends Extension { return true; } + getDeviceType(sourceFileUri) { + let roots = this.getRoots(); + for (let index = 0; index < roots.length; index++) { + if (sourceFileUri.indexOf(roots[index].uri) == 0) { + return roots[index].type; + } + } + return null; + } + openFile(sourceFileUri, flags) { if (!this.checkUri(sourceFileUri)) { return { @@ -313,7 +323,7 @@ export default class FileExtAbility extends Extension { }; } // If not across devices, use fileio.renameSync to move - if (!this.isCrossDeviceLink(sourceFileUri, targetParentUri)) { + if (!this.isCrossDeviceLink(sourceFileUri, targetParentUri) && this.getDeviceType(sourceFileUri) != DEVICE_TYPE.EXTERNAL_MTP) { fileio.renameSync(oldPath, newPath); return { uri: newFileUri, diff --git a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/Subcriber.ts b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/Subcriber.ts index e113b089..fb527597 100644 --- a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/Subcriber.ts +++ b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/Subcriber.ts @@ -20,7 +20,11 @@ async function onReceiveEvent(callBack) { "usual.event.data.VOLUME_UNMOUNTED", "usual.event.data.VOLUME_MOUNTED", "usual.event.data.VOLUME_BAD_REMOVAL", - "usual.event.data.VOLUME_EJECT" + "usual.event.data.VOLUME_EJECT", + "usual.event.data.MTPDEV_MOUNTED_SUCCESSED", + "usual.event.data.MTPDEV_MOUNTED_FAILED", + "usual.event.data.MTPDEV_UNMOUNTED_SUCCESSED", + "usual.event.data.MTPDEV_UNMOUNTED_FAILED" ] }; let subscriber = await CommonEvent.createSubscriber(subscribeInfo); diff --git a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/VolumeManager.ts b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/VolumeManager.ts index 76e391d0..5ec18d01 100644 --- a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/VolumeManager.ts +++ b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/VolumeManager.ts @@ -15,21 +15,22 @@ // @ts-nocheck import volumeManager from '@ohos.volumeManager' import fileExtensionInfo from "@ohos.fileExtensionInfo" +import mtpmanager from "@ohos.mtpManager" if (!globalThis.volumeInfoList) { globalThis.volumeInfoList = []; } const FLAG = fileExtensionInfo.FLAG; const DEVICE_TYPE = fileExtensionInfo.DeviceType; function init() { + let flags = FLAG.SUPPORTS_WRITE | + FLAG.SUPPORTS_DELETE | + FLAG.SUPPORTS_RENAME | + FLAG.SUPPORTS_COPY | + FLAG.SUPPORTS_MOVE | + FLAG.SUPPORTS_REMOVE | + FLAG.DIR_SUPPORTS_CREATE | + FLAG.DIR_PREFERS_LAST_MODIFIED; volumeManager.getAllVolumes().then((volumes) => { - let flags = FLAG.SUPPORTS_WRITE | - FLAG.SUPPORTS_DELETE | - FLAG.SUPPORTS_RENAME | - FLAG.SUPPORTS_COPY | - FLAG.SUPPORTS_MOVE | - FLAG.SUPPORTS_REMOVE | - FLAG.DIR_SUPPORTS_CREATE | - FLAG.DIR_PREFERS_LAST_MODIFIED; for (let i = 0; i < volumes.length; i++) { let volume = volumes[i]; let volumeInfo = { @@ -45,6 +46,23 @@ function init() { globalThis.volumeInfoList.push(volumeInfo); } }); + + mtpmanager.getAllMtpDevs().then((mtpList) => { + for (let i = 0; i < mtpList.length; i++) { + let volume = mtpList[i]; + let volumeInfo = { + 'volumeId': volume.id, + 'fsUuid': '', + 'path': volume.path, + 'uri': path2uri('', volume.path), + 'displayName': volume.id, + 'deviceId': '', + 'flags': flags, + 'type': DEVICE_TYPE.EXTERNAL_MTP + } + globalThis.volumeInfoList.push(volumeInfo) + } + }); } function addVolumeInfo(volumeInfo) { -- Gitee From 5454198e57687cdf7c61092ef4b3ee0a99a73f49 Mon Sep 17 00:00:00 2001 From: shuzhouhao Date: Mon, 29 Aug 2022 11:57:48 +0800 Subject: [PATCH 2/3] getRoots bug fixed Signed-off-by: shuzhouhao --- .../src/main/ets/FileExtensionAbility/FileExtensionAbility.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts index b208dc5f..e8aead71 100644 --- a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts +++ b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts @@ -157,7 +157,7 @@ export default class FileExtAbility extends Extension { } isCrossDeviceLink(sourceFileUri, targetParentUri) { - let roots = this.getRoots(); + let roots = this.getRoots().roots; for (let index = 0; index < roots.length; index++) { let uri = roots[index].uri; if (sourceFileUri.indexOf(uri) == 0 && targetParentUri.indexOf(uri) == 0) { @@ -168,7 +168,7 @@ export default class FileExtAbility extends Extension { } getDeviceType(sourceFileUri) { - let roots = this.getRoots(); + let roots = this.getRoots().roots; for (let index = 0; index < roots.length; index++) { if (sourceFileUri.indexOf(roots[index].uri) == 0) { return roots[index].type; -- Gitee From d2e784b9d598d2ebf259e914aca16ad3b1cd4af3 Mon Sep 17 00:00:00 2001 From: shuzhouhao Date: Tue, 30 Aug 2022 09:52:07 +0800 Subject: [PATCH 3/3] merge bug fixed Signed-off-by: shuzhouhao --- .../src/main/ets/FileExtensionAbility/FileExtensionAbility.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts index ea9f0359..eeaf7ec6 100644 --- a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts +++ b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts @@ -324,7 +324,7 @@ export default class FileExtAbility extends Extension { }; } // If not across devices, use fileio.renameSync to move - if (!this.isCrossDeviceLink(sourceFileUri, targetParentUri) && this.getDeviceType(sourceFileUri) != DEVICE_TYPE.EXTERNAL_MTP) { + if (!this.isCrossDeviceLink(sourceFileUri, targetParentUri) && this.getDeviceType(sourceFileUri) != DeviceType.EXTERNAL_MTP) { fileio.renameSync(oldPath, newPath); return { uri: newFileUri, -- Gitee