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 c4ee729b324ab3875edbe87fba5af595510c64f4..eeaf7ec69f9e5447569760d19d2e87c343579aab 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 @@ -39,7 +39,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); @@ -168,6 +168,16 @@ export default class FileExtAbility extends Extension { return true; } + getDeviceType(sourceFileUri) { + let roots = this.getRoots().roots; + 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 { @@ -314,7 +324,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) != DeviceType.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 e113b089031d85812f996a685aa0a1a4012614d4..fb527597016ee9e6ba89355dbd33a02f1a651159 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 03f572e55d772a5e273f18708da5e92c2e5e0ab4..78e0383f0edc1e7edeb214573b0dcf56358bfd76 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,6 +15,7 @@ // @ts-nocheck import volumeManager from '@ohos.volumeManager' import fileExtensionInfo from "@ohos.fileExtensionInfo" +import mtpmanager from "@ohos.mtpManager" if (!globalThis.volumeInfoList) { globalThis.volumeInfoList = []; } @@ -22,8 +23,8 @@ const DeviceFlag = fileExtensionInfo.DeviceFlag; const DeviceType = fileExtensionInfo.DeviceType; function init() { globalThis.volumeInfoList = []; + let flags = DeviceFlag.SUPPORTS_READ | DeviceFlag.SUPPORTS_WRITE; volumeManager.getAllVolumes().then((volumes) => { - let flags = DeviceFlag.SUPPORTS_READ | DeviceFlag.SUPPORTS_WRITE; for (let i = 0; i < volumes.length; i++) { let volume = volumes[i]; if (!volume.path) { @@ -41,6 +42,25 @@ function init() { globalThis.volumeInfoList.push(volumeInfo); } }); + + mtpmanager.getAllMtpDevs().then((mtpList) => { + for (let i = 0; i < mtpList.length; i++) { + let volume = mtpList[i]; + if (!volume.path) { + continue; + } + let volumeInfo = { + 'volumeId': volume.id, + 'fsUuid': '', + 'path': volume.path, + 'uri': path2uri('', volume.path), + 'displayName': volume.id, + 'deviceFlags': flags, + 'deviceType': DeviceType.EXTERNAL_MTP + } + globalThis.volumeInfoList.push(volumeInfo) + } + }); } function addVolumeInfo(volumeInfo) {