我开发了一个简单的自定义应用程序来查询一些连接到我移动的上的本地热点的自定义设备,以检查温度,速度等。直到android 12我使用runtime.exec('ip neigh show')
设置compileSdkVersion 29
,buildToolsVersion '29.0.3'
,minSdkVersion 21
和targetSdkVersion 27
,它可以完美地检索连接设备的IP。现在我使用了一个android 13设备,在runtime.exec('ip neigh show')
上调试,它返回ExitCode = 1
,这意味着在android 13设备上,对/proc/net/阿普文件有严格的限制,我想这是从ip neigh show命令中读取的。
有没有一个替代查询我自己的热点检索连接设备的IP与android 13+设备?....
编辑:现在唯一的事情,我可以检索Android 13设备是热点的IP:
wifiManager = (WifiManager) getActivity().getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiInfo = wifiManager.getConnectionInfo();
ipAddress = Formatter.formatIpAddress( wifiInfo.getIpAddress() );
在那里我可以读取设备的IP。也许有没有办法查询那个IP来检索连接的设备IP而不使用ip neigh show
?
编辑2:经过一些调查并尝试使用以下代码示例检查CONNECTIVITY_MANAGER:
Network[] allNetworks = connectivityManager.getAllNetworks();
for (Network network: allNetworks) {
NetworkInfo networkInfo = connectivityManager.getNetworkInfo(network);
LinkProperties lp = connectivityManager.getLinkProperties(network);
String id = lp.getInterfaceName();
Log.d("IdInfo", "id: " + id);
}
我在调试中只看到MOBILE[LTE]
连接,但我想热点应该是一个连接主机......还是不是?
1条答案
按热度按时间2ul0zpep1#
最后,我采用了一种不同的方式来实现我的目标,不是基于
arp file
或connectivityManager
,而是 * 知道域的掩码,然后检查该域的所有255 IP *.我认为在这个时候Android完全关闭了阿普文件,甚至出于安全原因查询自己的移动的热点设备.