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
相关产品推荐
相关产品推荐

