uniapp 操作wifi

117 阅读1分钟
<template>
  <view class="container">
    <button @tap="getWifiList">获取WiFi列表</button>
    <button @tap="connectWifi">连接WiFi</button>
    <button @tap="getCurrentWifi">获取当前WiFi</button>
    <button @tap="closeWifi">关闭WiFi</button>
    
    <view v-if="wifiList.length > 0">
      <view v-for="(wifi, index) in wifiList" :key="index">
        {{ wifi.SSID }} - 信号强度: {{ wifi.signalStrength }}
      </view>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      wifiList: []
    }
  },
  methods: {
    // 获取WiFi列表
    getWifiList() {
      uni.startWifi({
        success: () => {
          uni.getWifiList({
            success: (res) => {
              this.wifiList = res.wifiList
            },
            fail: (err) => {
              uni.showToast({
                title: '获取WiFi列表失败',
                icon: 'none'
              })
            }
          })
        }
      })
    },
    
    // 连接WiFi
    connectWifi() {
      uni.connectWifi({
        SSID: 'WiFi名称',
        password: '密码',
        success: () => {
          uni.showToast({
            title: 'WiFi连接成功'
          })
        },
        fail: (err) => {
          uni.showToast({
            title: 'WiFi连接失败',
            icon: 'none'
          })
        }
      })
    },
    
    // 获取当前WiFi信息
    getCurrentWifi() {
      uni.getConnectedWifi({
        success: (res) => {
          uni.showModal({
            content: `当前连接的WiFi:${res.wifi.SSID}`
          })
        }
      })
    },
    
    // 关闭WiFi(仅Android)
    closeWifi() {
      if (uni.getSystemInfoSync().platform === 'android') {
        try {
          plus.android.importClass("android.content.Context")
          plus.android.importClass("android.net.wifi.WifiManager")
          var context = plus.android.runtimeMainActivity()
          var wifiManager = context.getSystemService(Context.WIFI_SERVICE)
          wifiManager.setWifiEnabled(false)
          uni.showToast({
            title: 'WiFi已关闭'
          })
        } catch(e) {
          uni.showToast({
            title: '关闭WiFi失败',
            icon: 'none'
          })
        }
      } else {
        uni.showToast({
          title: '仅支持Android平台',
          icon: 'none'
        })
      }
    }
  }
}
</script>

<style>
.container {
  padding: 20px;
}
button {
  margin: 10px 0;
}
</style>

export default {
  methods: {
    // WiFi操作流程
    handleWifi() {
      // 1. 先初始化WiFi模块
      uni.startWifi({
        success: () => {
          // 2. 初始化成功后获取WiFi列表
          uni.getWifiList({
            success: (res) => {
              console.log('WiFi列表:', res.wifiList);
            },
            fail: (err) => {
              uni.showToast({
                title: '获取WiFi列表失败',
                icon: 'none'
              });
            }
          });
        },
        fail: (err) => {
          uni.showToast({
            title: 'WiFi模块初始化失败',
            icon: 'none'
          });
        }
      });
    },

    // 带权限检查的WiFi初始化
    initWifi() {
      // 检查权限
      uni.authorize({
        scope: 'scope.userLocation',
        success: () => {
          // 有权限,初始化WiFi
          uni.startWifi({
            success: () => {
              this.scanWifi();
            },
            fail: (err) => {
              console.error('WiFi初始化失败:', err);
            }
          });
        },
        fail: () => {
          uni.showModal({
            title: '提示',
            content: '需要定位权限才能使用WiFi功能',
            showCancel: false
          });
        }
      });
    },

    // 扫描WiFi
    scanWifi() {
      uni.getWifiList({
        success: (res) => {
          // 监听获取到的WiFi列表
          uni.onGetWifiList((res) => {
            console.log('搜索到的WiFi列表:', res.wifiList);
          });
        },
        fail: (err) => {
          console.error('扫描WiFi失败:', err);
        }
      });
    }
  }
}