You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Things预览版6从应用调用WiFi设置报错求助

解决Android Things预览版6树莓派3上无法打开WiFi设置界面的问题

我之前在Android Things设备上也碰到过这个坑,问题根源其实很明确:Android Things系统本身并没有预装像手机那样的系统级WiFi设置Activity,所以你调用startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS))时,系统找不到能匹配这个Intent的组件,自然就抛出ActivityNotFoundException了。

为什么手机上能正常运行?

手机的Android系统包含完整的设置应用,里面有专门处理WiFi配置的Activity,这个Intent能被正确识别;但Android Things是针对物联网设备设计的,它精简了大量手机端的系统组件,默认没有这类可视化的系统设置界面。

可行的解决方案

既然没法调用系统设置界面,我们可以直接用Android Things提供的WifiManager API来管理WiFi连接,或者自己做一个简易的WiFi设置UI。

方案1:直接用API管理WiFi

首先在AndroidManifest.xml中添加必要权限:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 扫描WiFi需要此权限 -->

然后在代码中实现WiFi的扫描与连接逻辑:

// 获取WifiManager实例
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);

// 开启WiFi
if (!wifiManager.isWifiEnabled()) {
    wifiManager.setWifiEnabled(true);
}

// 扫描周边WiFi网络
wifiManager.startScan();
List<ScanResult> scanResults = wifiManager.getScanResults();

// 连接指定WiFi(示例代码,替换成你的WiFi信息)
String targetSsid = "你的WiFi名称";
String targetPassword = "你的WiFi密码";

WifiConfiguration config = new WifiConfiguration();
config.SSID = "\"" + targetSsid + "\"";
config.preSharedKey = "\"" + targetPassword + "\"";

// 添加配置并连接
int networkId = wifiManager.addNetwork(config);
wifiManager.enableNetwork(networkId, true);
wifiManager.saveConfiguration();

方案2:自定义WiFi设置界面

如果需要让用户可视化选择WiFi、输入密码,你可以自己开发一个Activity:

  • 调用WifiManager扫描WiFi列表并展示
  • 提供输入框让用户填写密码
  • 提交时用上面的API完成连接

注意:扫描WiFi需要位置权限,记得在运行时动态申请该权限,否则扫描结果会为空。

内容的提问来源于stack exchange,提问作者HDatta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:52:08