未收到 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。这样,接口最终会在一段时间后回到接口列表中。