From 8691570427fb22192497139abb2ecce0401ebf6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cwangli325=E2=80=9D?= <“wangli325@huawei.com”> Date: Thu, 8 Jul 2021 15:25:27 +0800 Subject: [PATCH] fix Flow task management service show device list MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: “wangli325” <“wangli325@huawei.com”> --- .../slice/MainAbilitySlice.java | 86 ++++++++++++------- 1 file changed, 55 insertions(+), 31 deletions(-) diff --git a/ability/DistributedScheduler/entry/src/main/java/ohos/samples/distributedscheduler/slice/MainAbilitySlice.java b/ability/DistributedScheduler/entry/src/main/java/ohos/samples/distributedscheduler/slice/MainAbilitySlice.java index abda5dcc5d..ebd77dc1e1 100644 --- a/ability/DistributedScheduler/entry/src/main/java/ohos/samples/distributedscheduler/slice/MainAbilitySlice.java +++ b/ability/DistributedScheduler/entry/src/main/java/ohos/samples/distributedscheduler/slice/MainAbilitySlice.java @@ -15,8 +15,10 @@ package ohos.samples.distributedscheduler.slice; -import ohos.agp.window.dialog.IDialog; -import ohos.agp.window.dialog.ListDialog; +import ohos.aafwk.ability.continuation.ExtraParams; +import ohos.aafwk.ability.continuation.IContinuationDeviceCallback; +import ohos.aafwk.ability.continuation.IContinuationRegisterManager; +import ohos.aafwk.ability.continuation.RequestCallback; import ohos.distributedschedule.interwork.IInitCallback; import ohos.samples.distributedscheduler.MainAbility; import ohos.samples.distributedscheduler.RemoteAgentProxy; @@ -33,7 +35,6 @@ import ohos.agp.components.Text; import ohos.agp.window.dialog.ToastDialog; import ohos.app.Context; import ohos.bundle.ElementName; -import ohos.distributedschedule.interwork.DeviceInfo; import ohos.distributedschedule.interwork.DeviceManager; import ohos.eventhandler.EventHandler; import ohos.eventhandler.EventRunner; @@ -43,10 +44,6 @@ import ohos.hiviewdfx.HiLogLabel; import ohos.rpc.IRemoteObject; import ohos.rpc.RemoteException; -import java.util.List; - -import static ohos.agp.components.ComponentContainer.LayoutConfig.MATCH_CONTENT; - /** * MainAbilitySlice */ @@ -66,13 +63,17 @@ public class MainAbilitySlice extends AbilitySlice implements IAbilityContinuati private static final String REMOTE_SERVICE_FA = "ohos.samples.distributedscheduler.PageAbility"; + private IContinuationRegisterManager continuationRegisterManager; + + private int abilityToken; + private Text text; private String param; - private String selectedDeviceId; + private String selectedDeviceId; - private RemoteAgentProxy remoteAgentProxy = null; + private RemoteAgentProxy remoteAgentProxy = null; private EventHandler eventHandler = new EventHandler(EventRunner.current()) { @Override @@ -94,9 +95,21 @@ public class MainAbilitySlice extends AbilitySlice implements IAbilityContinuati public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ohos.samples.distributedscheduler.ResourceTable.Layout_main_ability_slice); + initContinuationRegisterManager(); initComponents(); } + private void initContinuationRegisterManager() { + continuationRegisterManager = getContinuationRegisterManager(); + ExtraParams params = new ExtraParams(); + String[] devTypes = new String[]{ExtraParams.DEVICETYPE_SMART_PAD, ExtraParams.DEVICETYPE_SMART_PHONE}; + params.setDevType(devTypes); + params.setTargetBundleName(REMOTE_BUNDLE); + String jsonParams = "{\"filter\":{\"commonFilter\":{\"groupType\":\"1|256\"}}," + "\"isTurnOffRecommend\":true,\"transferScene\":0}"; + params.setJsonParams(jsonParams); + continuationRegisterManager.register(REMOTE_BUNDLE, params, callback, requestCallback); + } + private void initComponents() { Component choiceDeviceButton = findComponentById(ResourceTable.Id_choice_device); choiceDeviceButton.setClickedListener(component -> selectDevice()); @@ -140,33 +153,42 @@ public class MainAbilitySlice extends AbilitySlice implements IAbilityContinuati } private void selectDevice() { - List infoList = DeviceManager.getDeviceList(DeviceInfo.FLAG_GET_ALL_DEVICE); - if ((infoList == null) || (infoList.size() == 0)) { - selectedDeviceId = null; - } - String[] items = new String[infoList.size()]; - int i = 0; - for (DeviceInfo info : infoList) { - items[i] = info.getDeviceType() + ", " + info.getDeviceName(); - i++; - } - ListDialog listDialog = new ListDialog(getContext()); - listDialog.setItems(items); - listDialog.setTitleText("Choice a device"); - listDialog.setSize(DIALOG_WIDTH, MATCH_CONTENT); - listDialog.setAutoClosable(true); - listDialog.setOnSingleSelectListener((IDialog dailog, int position) -> { - selectedDeviceId = infoList.get(position).getDeviceId(); + ExtraParams params = new ExtraParams(); + String[] devTypes = new String[]{ExtraParams.DEVICETYPE_SMART_PAD, ExtraParams.DEVICETYPE_SMART_PHONE}; + params.setDevType(devTypes); + params.setTargetBundleName(REMOTE_BUNDLE); + String jsonParams = "{\"filter\":{\"commonFilter\":{\"groupType\":\"1|256\"}}," + "\"isTurnOffRecommend\":true,\"transferScene\":0}"; + params.setJsonParams(jsonParams); + continuationRegisterManager.showDeviceList(abilityToken, params, null); + } + + private IContinuationDeviceCallback callback = new IContinuationDeviceCallback() { + @Override + public void onDeviceConnectDone(String s, String s1) { + selectedDeviceId = s; try { - HiLog.info(LABEL_LOG, "initDistributedEnvironmentClick begin "); DeviceManager.initDistributedEnvironment(selectedDeviceId, iInitCallback); - dailog.destroy(); } catch (RemoteException e) { HiLog.info(LABEL_LOG, "RemoteException happen"); } - }); - listDialog.show(); - } + } + + @Override + public void onDeviceDisconnectDone(String s) { + try { + DeviceManager.unInitDistributedEnvironment(selectedDeviceId, iInitCallback); + } catch (RemoteException | IllegalArgumentException e) { + HiLog.info(LABEL_LOG, e.getMessage()); + } + } + }; + + private RequestCallback requestCallback = new RequestCallback() { + @Override + public void onResult(int result) { + abilityToken = result; + } + }; private IInitCallback iInitCallback = new IInitCallback() { @Override @@ -284,5 +306,7 @@ public class MainAbilitySlice extends AbilitySlice implements IAbilityContinuati public void onStop() { super.onStop(); remoteAgentProxy = null; + continuationRegisterManager.unregister(abilityToken, null); + continuationRegisterManager.disconnect(); } } -- Gitee