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

Android 13(SDK33)无Root获取热点连接设备列表的替代方案

无Root权限下Android 13(SDK 33)获取热点连接设备列表的替代方案

针对Android 13(SDK 33)中读取ARP表、执行ip neigh命令失效的问题,目前有一个无需Root权限的官方替代方案:利用WifiManager.SoftApCallback监听热点连接状态,直接获取连接设备的MAC和IP地址。

实现步骤:

1. 声明必要权限

在AndroidManifest.xml中添加以下权限:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!-- Android 12+ 需添加此权限,无需位置权限 -->
<uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" />

2. 注册SoftAp回调监听设备连接

通过WifiManager注册SoftApCallback,当有设备连接/断开热点时,onConnectedClientsChanged方法会被回调,返回所有当前连接的设备信息:

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);

// 主线程Handler用于回调处理
Handler mainHandler = new Handler(Looper.getMainLooper());

wifiManager.registerSoftApCallback(new WifiManager.SoftApCallback() {
    @Override
    public void onConnectedClientsChanged(List<WifiManager.ClientInfo> connectedClients) {
        super.onConnectedClientsChanged(connectedClients);
        // 遍历并处理每个连接的设备
        for (WifiManager.ClientInfo client : connectedClients) {
            String macAddr = client.getMacAddress();
            // 将整数IP转换为字符串格式
            String ipAddr = Formatter.formatIpAddress(client.getIpAddress());
            Log.d("HotspotClients", "设备MAC: " + macAddr + ", IP: " + ipAddr);
        }
    }

    @Override
    public void onSoftApStateChanged(int state, int failureReason) {
        super.onSoftApStateChanged(state, failureReason);
        // 可在此监听热点的开启/关闭状态,例如:
        if (state == WifiManager.WIFI_AP_STATE_ENABLED) {
            Log.d("HotspotState", "热点已开启");
        }
    }
}, mainHandler);

关键说明:

  • 该API从Android 11(SDK 30)开始提供,完全兼容SDK 33,属于官方合法接口,无需Root权限
  • ClientInfo对象直接提供了MAC地址(getMacAddress())和IP地址(getIpAddress()),正好满足需求
  • Android 12+ 要求的NEARBY_WIFI_DEVICES权限,通过设置neverForLocation可以避免申请位置权限,符合隐私规范
  • 原方案失效原因:Android 13加强了系统资源访问限制,普通应用已无法读取ARP表或执行ip neigh这类系统命令获取设备信息

内容的提问来源于stack exchange,提问作者Han Wei Ho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 22:36:29