package org.adaptlab.chpir.android.activerecordcloudsync;
import org.adaptlab.chpir.android.survey.R;
import android.app.Notification;
import android.app.NotificationManager;
import android.content.Context;
import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
public class NetworkNotificationUtils {
private static final String TAG = "NetworkNotificationUtils";
/*
* Place a notification in the notification tray
*/
public static void showNotification(Context context, int iconId, int textId) {
if (context == null) return;
Resources r = context.getResources();
Notification notification = new NotificationCompat.Builder(context)
.setTicker(r.getString(R.string.app_name))
.setSmallIcon(iconId)
.setContentTitle(r.getString(R.string.app_name))
.setContentText(r.getString(textId))
.setAutoCancel(true)
.build();
NotificationManager notificationManager = (NotificationManager)
context.getSystemService(Context.NOTIFICATION_SERVICE);;
notificationManager.notify(0, notification);
}
/*
* Check for various network errors and display error message in notification
* tray.
*
* Return false if network errors, return true if okay to proceed.
*
* This WILL throw an exception if executed on UI thread since it pings a URL.
*/
public static boolean checkForNetworkErrors(Context context) {
if (!isNetworkAvailable(context.getApplicationContext())) {
Log.i(TAG, "Network is not available, short circuiting PollService...");
showNotification(context, android.R.drawable.ic_dialog_alert, R.string.network_unavailable);
} else if (!ActiveRecordCloudSync.isApiAvailable()) {
Log.i(TAG, "Api endpoint is not available, short circuiting PollService...");
showNotification(context, android.R.drawable.ic_dialog_alert, R.string.api_unavailable);
} else if (!ActiveRecordCloudSync.isVersionAcceptable()) {
Log.i(TAG, "Android version code is not acceptable, short circuting PollService...");
showNotification(context, android.R.drawable.ic_dialog_alert, R.string.unacceptable_version_code);
} else {
return true;
}
return false;
}
/*
* Check if Network is available on device.
*/
@SuppressWarnings("deprecation")
private static boolean isNetworkAvailable(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getBackgroundDataSetting() && cm.getActiveNetworkInfo() != null;
}
}