我正在尝试测试/实现丢失的网络用例。我有下面提到的代码。
我在Galaxy S6上运行它。我同时启用了移动数据和wifi。
要禁用网络,我打开“飞行模式”
我的问题是:
如果我从android studio重新启动应用程序,我会调用onReceive()
。但是,在几次打开/关闭飞行模式后,我没有调用public class ConnectionChangeReceiver extends BroadcastReceiver
{
@Override
public void onReceive( Context context, Intent intent )
{
// get Connectivity Manager object to check connection
ConnectivityManager connectivityManager =(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
// Check for network connections
if ( activeNetInfo != null && activeNetInfo.isConnected()) {
Intent newintent = new Intent(BroadcastedIntentFilters.INTERNET_CONNECTED);
LocalBroadcastManager.getInstance(context).sendBroadcast(newintent);
}
}
}
。
我在工作室设置断点以检查它是否被调用。
我错过了什么吗?
<receiver
android:name=".Network.ConnectionChangeReceiver"
android:exported="true"
android:label="NetworkConnection" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.STATE_CHANGE"/>
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
在清单文件
中Sql.Sum(1)
答案 0 :(得分:7)
在Android 5.0及更高版本中,您必须按connectivityManager.registerNetworkCallback
监控更改,这与您应该在BroadcastReveiver
收听的早期版本相比有所不同。
我写了一个简单的类,它支持所有Android版本,并允许监视更改并询问当前状态。
答案 1 :(得分:0)