未收到 Android 设备的所有网络接口
Not receiving all network interfaces of an Android device
我正在尝试查询对某些特定网络接口所做的网络更改。
我通过注册一个 BroadcastReceiver
来做到这一点:
<receiver android:name="com.my.app.ReceiverNetworkInterfaceChange">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
当发生变化时,它会触发一个使用此调用查询接口的方法:
final List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
我一直在通过打开和关闭飞行模式来测试它。接收器检测到变化并触发它。
问题是,在更改飞行模式状态后,并非所有接口都来自 getNetworkInterfaces()
调用。如果我直接调用该方法而不涉及飞行模式,接口列表中包含一个名为"ppp0"的接口,但是在打开和关闭飞行模式后,调用不会return "ppp0"列表中的接口所以我无法查询...
为什么这个特定界面会发生这种情况?
我最终做的是每分钟检查一次接口,而不是使用 BroadcastReceiver
。这样,接口最终会在一段时间后回到接口列表中。
我正在尝试查询对某些特定网络接口所做的网络更改。
我通过注册一个 BroadcastReceiver
来做到这一点:
<receiver android:name="com.my.app.ReceiverNetworkInterfaceChange">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
当发生变化时,它会触发一个使用此调用查询接口的方法:
final List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
我一直在通过打开和关闭飞行模式来测试它。接收器检测到变化并触发它。
问题是,在更改飞行模式状态后,并非所有接口都来自 getNetworkInterfaces()
调用。如果我直接调用该方法而不涉及飞行模式,接口列表中包含一个名为"ppp0"的接口,但是在打开和关闭飞行模式后,调用不会return "ppp0"列表中的接口所以我无法查询...
为什么这个特定界面会发生这种情况?
我最终做的是每分钟检查一次接口,而不是使用 BroadcastReceiver
。这样,接口最终会在一段时间后回到接口列表中。