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. android开启和关闭移动网络
  2. Android小项目之欢迎滑动页面(最简洁方法)
  3. android网络访问兼容
  4. android自动更新升级APP
  5. Android中使用HttpURLConnection和HttpClient实现GET和POST请求
  6. Android(安卓)DataBinding的简单使用
  7. android播放网络音频
  8. 获取Android当前网络类型(2g、3g、4g、wifi)以及手机型号、版本号
  9. Android系统信息获取 之九:TelephonyManager类

随机推荐

  1. Android获取存储卡路径的方式
  2. android TextView 实现自定义文字点击效
  3. Android购物车的实现(升级版 仿淘宝)
  4. Android初一
  5. 如何使Android应用开机时自动启动
  6. Android 中文 SDK (49) —— Filter.Filter
  7. Android之SharedPreferences详解与原理分
  8. JS判断终端类型的几种方法
  9. Android UI(3)Getting Started - Saving
  10. Android打开pdf,docx,doc,.xls,xlsx,结尾的文