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

Android Studio开发ESP8266控制APP:不打开浏览器执行URL请求求助

修复方案

你之前注释掉的ACTION_VIEW相关代码本身就是用来唤起系统浏览器的,注释后就不会再出现跳转浏览器的问题,之前操作后没生效是因为后续的网络请求本身没有执行成功,按以下步骤修改即可:

1. 配置权限与明文请求许可

在AndroidManifest.xml中添加配置:

  • 首先在标签下添加网络访问权限:
<uses-permission android:name="android.permission.INTERNET" />
  • 其次在标签中添加明文HTTP请求许可(Android 9及以上默认禁止http请求,你的ESP8266用的是http协议,必须加这行):
<application
    ...
    android:usesCleartextTraffic="true"
    ...>

2. 子线程执行网络请求

Android系统禁止在UI主线程执行网络类耗时操作,你原来直接在点击回调的主线程中调用URLConnection会直接抛出异常,导致请求没有执行。修改后的点击事件代码如下:

public void clicking(View view) {
    // 新开子线程执行网络请求,不阻塞主线程
    new Thread(() -> {
        HttpURLConnection urlConnection = null;
        try {
            URL url = new URL("http://192.168.4.1/LEDON?");
            urlConnection = (HttpURLConnection) url.openConnection();
            // 只要发起请求ESP8266就能收到控制指令,这里可以不用处理返回内容
            int code = urlConnection.getResponseCode();
            // 可选:如果需要确认请求成功,可以判断code是否为200
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (urlConnection != null) {
                urlConnection.disconnect();
            }
        }
    }).start();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:36:01