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)

更多相关文章

  1. 2.20 android连接wifi,解决mWifiManager.addNetwork(info)=-1
  2. android网络访问兼容
  3. android自动更新升级APP
  4. Android中使用HttpURLConnection和HttpClient实现GET和POST请求
  5. Android(安卓)DataBinding的简单使用
  6. android播放网络音频
  7. 获取Android当前网络类型(2g、3g、4g、wifi)以及手机型号、版本号
  8. Android系统信息获取 之九:TelephonyManager类
  9. android显示键盘时的页面自动调整

随机推荐

  1. Android动画效果translate、scale、alpha
  2. 原生Android也能做Web开发了
  3. Android屏幕禁止休眠的方法
  4. android 地图 infoWindow的每个控件添加
  5. Android(安卓)用Shell命令设置静态ip
  6. Android(安卓)xxx is not translated in
  7. Android(安卓)相对布局(Relative Layout)
  8. Android中数据存储的5中方法
  9. Android缺少awk:安装busybox
  10. android摄像头调用资料收集