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

Android报错socket failed: EACCES,小米Redmi Note3Pro传数据至电脑求助

解决Android Socket连接的EACCES (Permission denied)错误

看起来你在尝试从Redmi Note 3 Pro向电脑传输数据时遇到了Socket权限被拒绝的问题,我来帮你一步步解决这个问题:

1. 检查并添加必要的网络权限

首先,Android应用默认没有网络访问权限,你需要在AndroidManifest.xml中明确声明所需权限:

<!-- 允许应用访问网络核心权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 可选:获取网络状态,辅助排查连接异常 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

2. 启用明文网络访问(Android 9+)

如果你的Socket连接使用的是明文TCP/UDP(非加密连接),Android 9(API 28)及以上版本默认禁止明文网络流量,需要在AndroidManifest.xml的<application>标签中添加以下属性:

<application
    ...
    android:usesCleartextTraffic="true">
    ...
</application>

3. 确认端口与网络环境

  • 你代码中使用的27015端口是大于1024的,这没问题(Android不允许普通应用使用1024以下的特权端口);
  • 确保手机和电脑处于同一个局域网(比如连接同一WiFi),同时检查电脑防火墙是否允许27015端口的入站连接;
  • 连接时使用电脑的内网IP地址(如192.168.x.x),不要用localhost(手机上的localhost指向自身,而非电脑)。

4. 检查应用权限设置(Android 6+)

如果你的设备运行Android 6.0(API 23)及以上版本,除了在Manifest中声明权限,还可以手动确认权限状态:

  • 打开手机「设置」→「应用管理」→找到你的应用→「权限管理」→确保「网络权限」已开启。

5. 后台网络访问限制(Android 10+)

如果应用在后台运行时尝试建立Socket连接,Android 10(API 29)及以上版本可能会限制后台网络访问:

  • 优先在前台发起连接;
  • 若必须后台运行,在AndroidManifest.xml中添加后台网络权限,并在代码中动态申请(该权限属于危险权限):
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

额外排查点

  • 避免在主线程中发起网络请求(Android禁止主线程进行网络操作,会抛出NetworkOnMainThreadException,虽与当前权限错误不同,但也是常见坑点);
  • 尝试更换其他端口(如8080),确认是否是27015端口被系统或其他应用占用。

按照以上步骤排查后,应该就能解决权限被拒绝的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:14:10