我试图查询对某些特定网络接口所做的网络更改。
我通过注册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()
呼叫接收到所有接口。如果我直接调用该方法而不涉及飞行模式,则接口列表包含一个名为&#34; ppp0&#34;的接口,但在打开和关闭飞行模式后,呼叫不会返回&#34; ppp0&# 34;列表上的界面,所以我无法查询...
为什么这个特定界面会发生这种情况?
答案 0 :(得分:0)
我最终做的是每分钟检查一次界面,而不是使用BroadcastReceiver
。这样,界面最终会在一段时间后返回到接口列表。