2011-04-01 64 views

回答

0

您可以注册WiFi和移动网络BroadcastReceiver,然后保存时间在BroadcastReceiver

public class NetworkReceiver extends BroadcastReceiver { 
    private final String TAG = "WifiReceiver"; 
    public static final String WIFI_DISCONNECTED_TIME = "wifi_disconnected_time"; 
    public static final String WIFI_CONNECTED_TIME = "wifi_connected_time"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     MyLog.e(TAG, "Broadcast"); 
     if(intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { 
      NetworkInfo netInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); 
      String networkStateText; 

      switch (netInfo.getState()) { 
      case DISCONNECTING: 
       networkStateText = "DISCONNECTING"; 
       break; 
      case DISCONNECTED: 
       networkStateText = "DISCONNECTED"; 
       //Save the time internet disconnected here 
       context.getSharedPreferences("MyPrefs", Context.MODE_PRIVATE).edit().putLong(WIFI_DISCONNECTED_TIME, System.currentTimeMillis()).commit(); 
       break; 
      case CONNECTING: 
       networkStateText = "CONNECTING"; 
       break; 
      case CONNECTED: 
       networkStateText = "CONNECTED"; 
       //Save the time internet connected here 
       context.getSharedPreferences("MyPrefs", Context.MODE_PRIVATE).edit().putLong(WIFI_CONNECTED_TIME, System.currentTimeMillis()).commit(); 
       break; 
      case SUSPENDED: 
       networkStateText = "SUSPENDED"; 
       break; 
      case UNKNOWN: 
       networkStateText = "UNKNOWN"; 
       break; 
      default: 
       networkStateText = "No State"; 
       break; 
      } 
      MyLog.e(TAG, "Broadcast > NetworkState: " + networkStateText); 
     } 
    } 
} 

不要忘了把许可android.permission.ACCESS_NETWORK_STATE并添加接收器Android清单的onReceive()方法。

<!-- Check for Internet Connectivity --> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <receiver android:name=".NetworkReceiver" > 
      <intent-filter> 
       <action android:name="android.net.wifi.STATE_CHANGE" /> 
      </intent-filter> 
     </receiver> 
    </application> 

然后你就可以从你的SharedPreferences的时间在你Activity类。

祝你好运。