2014-11-05 34 views
0

我已經成功地使用了答案this question如果移動數據已啓用進行一次性檢查,但我希望收到這種變化的通知,例如,當用戶進入到這個畫面:如何監控Android上啓用的移動數據更改?

Mobile Data Enable screen

這可能嗎?

+0

也許你可以使用SettingsContentObserver喜歡在這個崗位描述:http://stackoverflow.com/questions/6896746/android-is-there-a-broadcast-action-for-volume-changes – Okas 2014-11-05 11:33:04

+0

善於思考,但我遵循你的想法,並找到方法來檢測藍牙,飛機模式,GPRS,各種各樣的變化,但*不*移動數據:( – joshcomley 2014-11-05 18:33:26

回答

1

您可以使用OnNetworkActiveListener來監視網絡數據的激活。 ConnectivityManager class可以爲您提供有關當前活動網絡連接的信息。它會這樣:

ConnectivityManager cm = getSystemService(Activity.CONNECTIVITY_SERVICE); 
NetworkInfos networkInfos = cm.getActiveNetworkInfo(); 

if(networkInfos.isConnected()){ 
    //Do something 
} else { 
    //Do something else 
} 

希望它有幫助。

+0

這看起來像它會工作,所以我已經投了票,但我其實需要 joshcomley 2014-11-05 18:34:07

0
public static boolean isNetworkOn(Context context, int networkType) { 
     final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 

     if (Build.VERSION.SDK_INT >= 21) { 
      final Network[] networks = connectivityManager.getAllNetworks(); 
      for (Network network : networks) { 
       final NetworkInfo networkInfo = connectivityManager.getNetworkInfo(network); 
       if (networkInfo.getType() == networkType && networkInfo.isConnectedOrConnecting()) { 
        return true; 
       } 
      } 
     } 
     else { 
      @SuppressWarnings("deprecation") final NetworkInfo networkInfo = connectivityManager.getNetworkInfo(networkType); 
      if (networkInfo.isConnectedOrConnecting()) { 
       return true; 
      } 
     } 
     return false; 
    }