com.johan.vertretungsplan.background.VertretungsplanService.java Source code

Java tutorial

Introduction

Here is the source code for com.johan.vertretungsplan.background.VertretungsplanService.java

Source

/*  Vertretungsplan - Android-App fr Vertretungsplne von Schulen
Copyright (C) 2014  Johan v. Forstner
    
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
    
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
    
You should have received a copy of the GNU General Public License
along with this program.  If not, see [http://www.gnu.org/licenses/]. */

package com.johan.vertretungsplan.background;

import android.app.IntentService;
import android.appwidget.AppWidgetManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.NetworkInfo.State;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;

import com.google.gson.Gson;
import com.johan.vertretungsplan.objects.Vertretungsplan;
import com.johan.vertretungsplan.parser.BaseParser;
import com.johan.vertretungsplan.parser.BaseParser.UnauthorizedException;
import com.johan.vertretungsplan.parser.BaseParser.VersionException;
import com.johan.vertretungsplan.widget.VertretungsplanWidgetProvider;
import com.johan.vertretungsplan_2.VertretungsplanApplication;

import org.json.JSONException;

import java.io.IOException;

public class VertretungsplanService extends IntentService {
    public static final int RESULT_OK = -1;
    public static final int RESULT_ERROR = 0;
    public static final int RESULT_VERSION_ERROR = 1;
    public static final int RESULT_UNAUTHORIZED_ERROR = 2;
    public static final String KEY_NOTIFICATION = "notification";
    public static String UPDATE_ACTION = "UPDATE";
    static SharedPreferences settings;
    static Bundle extras;
    static Context context;

    public VertretungsplanService() {
        super("VertretungsplanService");
    }

    // Will be called asynchronously by Android
    @Override
    protected void onHandleIntent(Intent intent) {
        context = this;
        settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        extras = intent.getExtras();
        Gson gson = new Gson();

        boolean autoSync;
        try {
            autoSync = extras.getBoolean("AutoSync");
        } catch (NullPointerException e) {
            autoSync = false;
        }

        ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

        //wifi
        State wifi = conMan.getNetworkInfo(1).getState();

        if (wifi == NetworkInfo.State.CONNECTED || autoSync == false
                || settings.getBoolean("syncWifi", false) == false) {

            Log.d("Vertretungsplan", "WiFi state: " + wifi);
            Log.d("Vertretungsplan", "autoSync: " + autoSync);
            Log.d("Vertretungsplan", "syncWifi: " + Boolean.valueOf(settings.getBoolean("syncWifi", false)));

            Log.d("Vertretungsplan", "Vertretungsplan wird abgerufen");

            try {
                BaseParser parser = ((VertretungsplanApplication) getApplication()).getParser();

                if (parser == null)
                    return;

                Vertretungsplan v = parser.getVertretungsplan();
                settings.edit().putString("Vertretungsplan", gson.toJson(v)).commit();

                AppWidgetManager mgr = AppWidgetManager.getInstance(this);
                int[] ids = mgr.getAppWidgetIds(new ComponentName(this, VertretungsplanWidgetProvider.class));
                new VertretungsplanWidgetProvider().onUpdate(this, mgr, ids);
            } catch (IOException | JSONException e) {
                e.printStackTrace();
            } catch (VersionException e) {
            } catch (UnauthorizedException e) {
            }
        }
    }

}