一、需要增加安卓访问用户位置与信息的权限
1.manifest.json文件中增加对应权限
/* android打包配置 */
"android" : {
"permissions" : [
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>"
]
},
二、尝试动态获取用户位置信息权限
// 请求位置权限
requestLocationPermission() {
if (plus.os.name.toLowerCase() === "android") {
plus.android.requestPermissions(
[
"android.permission.ACCESS_FINE_LOCATION",
"android.permission.ACCESS_COARSE_LOCATION",
],
function(result) {
console.log("位置权限请求结果:", result);
},
function(error) {
console.error("位置权限请求错误:", error);
}
);
}
},
三、使用uniapp的getNetworkType先获取网络状态,判断是否连接了wifi
uni.getNetworkType({
success: (res) => {
if (res.networkType === "wifi") {
// 已连接WiFi,尝试获取SSID
this.getWifiSSID();
} else {
// 未连接WiFi
console.log('未连接WiFi网络');
}
},
fail: (err) => {
console.error('获取网络类型失败:', err);
},});
四、获取WiFi SSID
getWifiSSID() {
// console.log('尝试获取WiFi SSID');
if (window.plus) {
try {
// 主窗体
var MainActivity = plus.android.runtimeMainActivity();
// 上下文
var Context = plus.android.importClass("android.content.Context");
// 导入WIFI管理和WIFI信息的class
plus.android.importClass("android.net.wifi.WifiManager");
plus.android.importClass("android.net.wifi.WifiInfo");
// 获取WIFI管理实例
var wifiManager = MainActivity.getSystemService(Context.WIFI_SERVICE);
// 获取当前连接WIFI的信息
var info = wifiManager.getConnectionInfo();
// 获取当前WIFI连接的SSID (WIFI名称)
var ssid = info.getSSID();
console.log('原始SSID:', ssid);
// SSID带双引号,需要处理一下
ssid = ssid.replace(/(^\"*)|(\"*$)/g, "");
console.log('处理后SSID:', ssid);
// 处理<unknown ssid>的情况
if (ssid && ssid !== "<unknown ssid>") {
console.log('WiFi SSID:', ssid, '是否为公司WiFi:', this.isInCompanyWifi);
} else {
console.log("无法识别WiFi名称");
}
} catch (e) {
console.error('获取WiFi SSID异常:', e);
}
}
},