Android(安卓)监听网络变化然后刷新页面
16lz
2022-06-15
1.先在AndroidManifest.xml中添加有关的权限,以及receiver的intent-filter
"android.permission.ACCESS_NETWORK_STATE" />...
"true" android:exported="true" android:name=".receiver.GlobalReceiver"> "android.intent.action.BOOT_COMPLETED"/> "android.net.conn.CONNECTIVITY_CHANGE"/> ...
2.监听网络变化
public class GlobalReceiver extends BroadcastReceiver { private final static String ACTION_NETWORK = "android.net.conn.CONNECTIVITY_CHANGE"; @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(ACTION_NETWORK)) { // 网络变化时, 刷新当前页面. refreshWhenNetChanged(context); } } private void refreshWhenNetChanged(Context context){ boolean isOnline = false; ConnectivityManager connectManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeInfo = connectManager.getActiveNetworkInfo(); //里面如果有参数,如ConnectivityManager.TYPE_WIFI,就是判断是否有WiFi网络.TYPE_后有很多选项,可根据需求填写. if (activeInfo != null) { isOnline = activeInfo.isConnected(); //判断是否有网 } if (isOnline) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); String runningActivity = activityManager.getRunningTasks(1).get(0).topActivity.getClassName(); //获取当前所在的Activity名称 String contextActivity = runningActivity.substring(runningActivity.lastIndexOf(".") + 1); Log.i(TAG, "contextActivity:" + contextActivity); //打开页面火刷新页面 Intent intent = new Intent(context, xxx.class); //intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); context.startActivity(intent); } }}
因为该代码位于receiver里, 所以在新建intent用于startActivity时,
FLAG设为FLAG_ACTIVITY_SINGLE_TOP或FLAG_ACTIVITY_CLEAR_TOP是无效的.
会报错:Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag
3.用adb发个广播测试下~
adb shell am broadcast -a android.net.conn.CONNECTIVITY_CHANGE
( ADB发广播,开启关闭Activity/Service)
更多相关文章
- 2.20 android连接wifi,解决mWifiManager.addNetwork(info)=-1
- android网络访问兼容
- android自动更新升级APP
- Android中使用HttpURLConnection和HttpClient实现GET和POST请求
- Android(安卓)DataBinding的简单使用
- android播放网络音频
- 获取Android当前网络类型(2g、3g、4g、wifi)以及手机型号、版本号
- Android系统信息获取 之九:TelephonyManager类
- android显示键盘时的页面自动调整