1import NetworkStandItem from '../common/components/networkStandItem'; 2import radio from '@ohos.telephony.radio'; 3import HeadComponent from '../common/components/headComponent'; 4import LogUtils from '../common/utils/LogUtils'; 5import { BusinessError } from '@ohos.base'; 6 7const TAG = 'NetworkStand'; 8 9@Entry 10@Component 11struct NetworkStand { 12 @State @Watch('networkModeChanged') networkMode: number = 5 13 @State slotId: number = 0; 14 15 aboutToAppear(): void { 16 this.getPreferredNetwork(this.slotId); 17 } 18 19 /** 20 * Get network mode 21 * 22 * @param {Object} slotId - call slotId 23 */ 24 async getPreferredNetwork(slotId:number) { 25 26 radio.getPreferredNetwork(slotId, (err, data: radio.PreferredNetworkMode) => { 27 if (err) { 28 LogUtils.e(TAG, 'getPreferredNetwork error, callback: data->' + JSON.stringify(err)) 29 return; 30 } 31 32 this.networkMode = data 33 LogUtils.i(TAG, 'getPreferredNetwork success, callback: data-> ' + JSON.stringify(data)) 34 }); 35 36 } 37 38 networkModeChanged() { 39 LogUtils.i(TAG, 'networkMode Changed data-> ' + JSON.stringify(this.networkMode)) 40 try { 41 radio.setPreferredNetwork(this.slotId, this.networkMode).then(() => { 42 }).catch((err:BusinessError) => { 43 LogUtils.i(TAG, 'set 0 Preferred Network-> ' + JSON.stringify(this.networkMode) + 'failed' + JSON.stringify(err)) 44 }); 45 } catch (err) { 46 LogUtils.i(TAG, 'set 0 Preferred Network-> ' + JSON.stringify(this.networkMode) + 'failed tryCatch ' + JSON.stringify(err)) 47 } 48 } 49 50 build() { 51 52 Column() { 53 HeadComponent({ title: $r('app.string.network_standard_select'), isTerminateSelf: false }); 54 Column() { 55 NetworkStandItem({ 56 networkMode: $networkMode, 57 title: $r('app.string.mobile_data_fiveAuto'), 58 thisNetworkMode: radio.PreferredNetworkMode.PREFERRED_NETWORK_MODE_NR_LTE_WCDMA_GSM//34 59 }) 60 Divider() 61 .strokeWidth(0.5) 62 .color('#E3E3E3') 63 .lineCap(LineCapStyle.Round) 64 .margin({ left: '2%', right: '2%' }) 65 NetworkStandItem({ 66 networkMode: $networkMode, 67 title: $r('app.string.mobile_data_fourAuto'), 68 thisNetworkMode: radio.PreferredNetworkMode.PREFERRED_NETWORK_MODE_LTE_WCDMA_GSM //5 69 }) 70 Divider() 71 .strokeWidth(0.5) 72 .color('#E3E3E3') 73 .lineCap(LineCapStyle.Round) 74 .margin({ left: '2%', right: '2%' }) 75 NetworkStandItem({ 76 networkMode: $networkMode, 77 title: $r('app.string.mobile_data_threeAuto'), 78 thisNetworkMode: radio.PreferredNetworkMode.PREFERRED_NETWORK_MODE_WCDMA_GSM//6 79 }) 80 Divider() 81 .strokeWidth(0.5) 82 .color('#E3E3E3') 83 .lineCap(LineCapStyle.Round) 84 .margin({ left: '2%', right: '2%' }) 85 NetworkStandItem({ 86 networkMode: $networkMode, 87 title: $r('app.string.mobile_data_only_5g'), 88 thisNetworkMode: radio.PreferredNetworkMode.PREFERRED_NETWORK_MODE_NR//31 89 }) 90 Divider() 91 .strokeWidth(0.5) 92 .color('#E3E3E3') 93 .lineCap(LineCapStyle.Round) 94 .margin({ left: '2%', right: '2%' }) 95 NetworkStandItem({ 96 networkMode: $networkMode, 97 title: $r('app.string.mobile_data_only_4g'), 98 thisNetworkMode: radio.PreferredNetworkMode.PREFERRED_NETWORK_MODE_LTE//3 99 }) 100 Divider() 101 .strokeWidth(0.5) 102 .color('#E3E3E3') 103 .lineCap(LineCapStyle.Round) 104 .margin({ left: '2%', right: '2%' }) 105 NetworkStandItem({ 106 networkMode: $networkMode, 107 title: $r('app.string.mobile_data_only_3g'), 108 thisNetworkMode: radio.PreferredNetworkMode.PREFERRED_NETWORK_MODE_WCDMA//2 109 }) 110 Divider() 111 .strokeWidth(0.5) 112 .color('#E3E3E3') 113 .lineCap(LineCapStyle.Round) 114 .margin({ left: '2%', right: '2%' }) 115 NetworkStandItem({ 116 networkMode: $networkMode, 117 title: $r('app.string.mobile_data_2g'), 118 thisNetworkMode: radio.PreferredNetworkMode.PREFERRED_NETWORK_MODE_GSM//1 119 }) 120 } 121 .padding({ 122 left: 4, 123 right: 4, 124 top: 4, 125 bottom: 4 126 }) 127 .width('90%') 128 .borderRadius(16) 129 .backgroundColor(Color.White) 130 }.height('100%') 131 .width('100%') 132 .backgroundColor($r('sys.color.ohos_id_color_sub_background')) 133 } 134}