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.settingsAbilityContext, 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 } catch (err) { 47 LogUtils.e(TAG, 'addAirPlaneModeListener error: code: ' + err.code + ', message: ' + err.message); 48 } 49 }); 50 } catch (err) { 51 LogUtils.e(TAG, 'addAirPlaneModeListener error: code: ' + err.code + ', message: ' + err.message); 52 } 53} 54 55/** 56 * remove AirPlaneMode Listener. 57 */ 58export function removeAirPlaneModeListener() { 59 LogUtils.i(TAG, 'removeAirPlaneModeListener'); 60 if (!dataShareHelper) { 61 LogUtils.e(TAG, 'removeAirPlaneModeListener dataShareHelper null'); 62 return; 63 } 64 try { 65 dataShareHelper.off('dataChange', SETTING_AIRPLANE_MODE_URI, () => { 66 LogUtils.i(TAG, 'removeAirPlaneModeListener dataChange'); 67 }); 68 } catch (err) { 69 LogUtils.e(TAG, 'removeAirPlaneModeListener error: code: ' + err.code + ', message: ' + err.message); 70 } 71} 72 73/** 74 * query AirPlaneMode. 75 */ 76export function queryAirPlaneMode(callback) { 77 LogUtils.i(TAG, 'queryAirPlaneMode'); 78 if (!dataShareHelper) { 79 LogUtils.e(TAG, 'queryAirPlaneMode dataShareHelper null'); 80 return; 81 } 82 let condition = new dataSharePredicates.DataSharePredicates(); 83 condition.equalTo('KEYWORD', 'airplane_mode'); 84 try { 85 // ID, KEYWORD, VALUE 86 dataShareHelper.query(SETTING_AIRPLANE_MODE_URI, condition, null).then((data) => { 87 LogUtils.i(TAG, 'queryAirPlaneMode query succeed'); 88 if (data && data.goToFirstRow()) { 89 LogUtils.i(TAG, 'queryAirPlaneMode query succeed return key'); 90 callback(data.getLong(data.getColumnIndex('VALUE'))); 91 return; 92 } 93 callback(-1); 94 }).catch((err) => { 95 LogUtils.e(TAG, 'queryAirPlaneMode query in error: err: ' + JSON.stringify(err)); 96 }); 97 } catch (err) { 98 LogUtils.e(TAG, 'queryAirPlaneMode query out error: code: ' + err.code + ', message: ' + err.message); 99 } 100}