/*
* Copyright 2014 Sebastiano Poggi and Francesco Pontillo
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* Copyright (C) 2006 The Android Open Source Project Licensed under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with the License. You may obtain
* a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable
* law or agreed to in writing, software distributed under the License is distributed on an "AS IS"
* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
* for the specific language governing permissions and limitations under the License.
*/
package net.frakbot.FWeather.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import net.frakbot.FWeather.updater.UpdaterService;
import net.frakbot.FWeather.util.ConnectionHelper;
import net.frakbot.FWeather.util.WidgetHelper;
import net.frakbot.util.log.FLog;
/**
* BroadcastReceiver listening for changes of connection:
* - it has to be registered when the connection is not available
* - upon receiving new information, check whether the connection has become available
* - launches the UpdaterService, thus disabling itself
* @author Francesco Pontillo
*/
public class ConnectivityBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = ConnectivityBroadcastReceiver.class.getSimpleName();
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (!action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
FLog.w(TAG, "onReceived() called with " + intent);
return;
}
boolean connectivity = !intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
FLog.d(TAG, "Network connectivity status change. Available: " + connectivity);
// If there's connectivity
if (connectivity) {
ConnectionHelper.unregisterConnectivityListener(context.getApplicationContext());
// Restart the updater service, that will disable this broadcast receiver
final Intent updaterIntent =
new Intent(context, UpdaterService.class)
.putExtra(UpdaterService.EXTRA_WIDGET_IDS, WidgetHelper.getWidgetIds(context));
context.startService(updaterIntent);
}
}
}