1/** 2 * Copyright (c) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15/** 16 * Message/AirplaneMode utils 17 */ 18const SETTING_AIRPLANE_MODE_URI = 'datashare:///com.ohos.settingsdata/entry/settingsdata/SETTINGSDATA?Proxy=true'; 19const QUERY_AIRPLANE_MODE_KEY = 'airplane_mode'; 20const TAG = 'AirplaneMode'; 21 22import dataShare from '@ohos.data.dataShare'; 23import dataSharePredicates from '@ohos.data.dataSharePredicates'; 24import LogUtils from './LogUtils'; 25 26let dataShareHelper; 27 28/** 29 * add AirPlaneMode Listener. 30 */ 31export function addAirPlaneModeListener(callback) { 32 LogUtils.i(TAG, 'addAirPlaneModeListener'); 33 try { 34 dataShare.createDataShareHelper(globalThis.calluiAbilityContext, SETTING_AIRPLANE_MODE_URI, (err, data) => { 35 if (err != undefined) { 36 LogUtils.e(TAG, 'addAirPlaneModeListener error: code: ' + err.code + ', message: ' + err.message); 37 return; 38 } 39 dataShareHelper = data; 40 try { 41 dataShareHelper.on('dataChange', SETTING_AIRPLANE_MODE_URI, () => { 42 LogUtils.i(TAG, 'addAirPlaneModeListener dataChange'); 43 queryAirPlaneMode(callback); 44 }); 45 queryAirPlaneMode(callback); 46 LogUtils.i(TAG, 'addAirPlaneModeListener success'); 47 } catch (err) { 48 LogUtils.e(TAG, 'addAirPlaneModeListener error: code: ' + err.code + ', message: ' + err.message); 49 } 50 }); 51 } catch (err) { 52 LogUtils.e(TAG, 'addAirPlaneModeListener error: code: ' + err.code + ', message: ' + err.message); 53 } 54} 55 56/** 57 * remove AirPlaneMode Listener. 58 */ 59export function removeAirPlaneModeListener() { 60 LogUtils.i(TAG, 'removeAirPlaneModeListener'); 61 if (!dataShareHelper) { 62 LogUtils.e(TAG, 'removeAirPlaneModeListener dataShareHelper null'); 63 return; 64 } 65 try { 66 dataShareHelper.off('dataChange', SETTING_AIRPLANE_MODE_URI, () => { 67 LogUtils.i(TAG, 'removeAirPlaneModeListener dataChange'); 68 }); 69 } catch (err) { 70 LogUtils.e(TAG, 'removeAirPlaneModeListener error: code: ' + err.code + ', message: ' + err.message); 71 } 72} 73 74/** 75 * turnOn AirPlaneMode. 76 */ 77export function turnOnAirPlaneMode() { 78 LogUtils.i(TAG, 'turnOnAirPlaneMode'); 79 if (!dataShareHelper) { 80 LogUtils.e(TAG, 'turnOnAirPlaneMode dataShareHelper null'); 81 return; 82 } 83 let valueBucket = { 84 'KEYWORD': QUERY_AIRPLANE_MODE_KEY, 85 'VALUE': true 86 }; 87 try { 88 let da = new dataSharePredicates.DataSharePredicates(); 89 dataShareHelper.update(SETTING_AIRPLANE_MODE_URI, da, valueBucket, (err, data) => { 90 if (err != undefined) { 91 LogUtils.e(TAG, 'turnOnAirPlaneMode update error: err: ' + err); 92 return; 93 } 94 LogUtils.i(TAG, 'turnOnAirPlaneMode update succeed'); 95 }); 96 } catch (err) { 97 LogUtils.e(TAG, 'turnOnAirPlaneMode error: code: ' + err.code + ', message: ' + err.message); 98 } 99} 100 101/** 102 * turnOff AirPlaneMode. 103 */ 104export function turnOffAirPlaneMode() { 105 LogUtils.i(TAG, 'turnOffAirPlaneMode'); 106 if (!dataShareHelper) { 107 LogUtils.e(TAG, 'turnOffAirPlaneMode dataShareHelper null'); 108 return; 109 } 110 let valueBucket = { 111 'KEYWORD': QUERY_AIRPLANE_MODE_KEY, 112 'VALUE': false 113 }; 114 try { 115 let da = new dataSharePredicates.DataSharePredicates(); 116 dataShareHelper.update(SETTING_AIRPLANE_MODE_URI, da, valueBucket, (err, data) => { 117 if (err != undefined) { 118 LogUtils.e(TAG, 'turnOffAirPlaneMode update error: code: ' + err.code + ', message:' + err.message); 119 return; 120 } 121 LogUtils.i(TAG, 'turnOffAirPlaneMode update succeed'); 122 }); 123 } catch (err) { 124 LogUtils.e(TAG, 'turnOffAirPlaneMode error: code: ' + err.code + ', message: ' + err.message); 125 } 126} 127 128/** 129 * query AirPlaneMode. 130 */ 131export function queryAirPlaneMode(callback) { 132 LogUtils.i(TAG, 'queryAirPlaneMode'); 133 if (!dataShareHelper) { 134 LogUtils.e(TAG, 'queryAirPlaneMode dataShareHelper null'); 135 return; 136 } 137 let condition = new dataSharePredicates.DataSharePredicates(); 138 condition.equalTo('KEYWORD', 'airplane_mode'); 139 try { 140 // ID, KEYWORD, VALUE 141 dataShareHelper.query(SETTING_AIRPLANE_MODE_URI, condition, null).then((data) => { 142 LogUtils.i(TAG, 'queryAirPlaneMode query succeed'); 143 if (data && data.goToFirstRow()) { 144 LogUtils.i(TAG, 'queryAirPlaneMode query succeed return key'); 145 callback(data.getLong(data.getColumnIndex('VALUE'))); 146 return; 147 } 148 callback(-1); 149 }).catch((err) => { 150 LogUtils.e(TAG, 'queryAirPlaneMode query in error: err: ' + JSON.stringify(err)); 151 }); 152 } catch (err) { 153 LogUtils.e(TAG, 'queryAirPlaneMode query out error: code: ' + err.code + ', message: ' + err.message); 154 } 155}