我正在尝试测试/实现丢失的网络用例.我有下面提到的代码.
我在Galaxy S6上运行它.我同时启用了移动数据和WiFi.
要禁用网络,我打开"飞行模式"
我的问题是:
如果我从android studio重新启动应用程序,我会被ConnectionChangeReceiver.onReceive()调用.但是,在几次打开/关闭飞行模式后,我没有被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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在清单文件中
<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" />
Run Code Online (Sandbox Code Playgroud)
在Android 5.0及更高版本中,您必须监视connectivityManager.registerNetworkCallback与您应该监听的早期版本不同的更改BroadcastReveiver.
我写了一个简单的类,它支持所有Android版本,并允许监视更改并询问当前状态.
https://github.com/mklimek/network-availability
| 归档时间: |
|
| 查看次数: |
1284 次 |
| 最近记录: |