/* * Nextcloud Android client application * * @author Mario Danic * @author Chris Narkiewicz * Copyright (C) 2017 Mario Danic * Copyright (C) 2017 Nextcloud * Copyright (C) 2019 Chris Narkiewicz * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or 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 AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this program. If not, see . */ package com.owncloud.android.utils; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import com.evernote.android.job.JobRequest; import com.evernote.android.job.util.Device; import com.nextcloud.client.account.UserAccountManager; import com.nextcloud.client.device.PowerManagementService; import com.nextcloud.client.network.ConnectivityService; import com.owncloud.android.MainApp; import com.owncloud.android.datamodel.UploadsStorageManager; /** * Helper for setting up network and power receivers */ public final class ReceiversHelper { private ReceiversHelper() { // utility class -> private constructor } public static void registerNetworkChangeReceiver(final UploadsStorageManager uploadsStorageManager, final UserAccountManager accountManager, final ConnectivityService connectivityService, final PowerManagementService powerManagementService) { Context context = MainApp.getAppContext(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); intentFilter.addAction("android.net.wifi.STATE_CHANGE"); BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (!Device.getNetworkType(context).equals(JobRequest.NetworkType.ANY)) { FilesSyncHelper.restartJobsIfNeeded(uploadsStorageManager, accountManager, connectivityService, powerManagementService); } } }; context.registerReceiver(broadcastReceiver, intentFilter); } public static void registerPowerChangeReceiver( final UploadsStorageManager uploadsStorageManager, final UserAccountManager accountManager, final ConnectivityService connectivityService, final PowerManagementService powerManagementService ) { Context context = MainApp.getAppContext(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_POWER_CONNECTED); intentFilter.addAction(Intent.ACTION_POWER_DISCONNECTED); BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_POWER_CONNECTED.equals(intent.getAction())) { FilesSyncHelper.restartJobsIfNeeded(uploadsStorageManager, accountManager, connectivityService, powerManagementService); } } }; context.registerReceiver(broadcastReceiver, intentFilter); } public static void registerPowerSaveReceiver( final UploadsStorageManager uploadsStorageManager, final UserAccountManager accountManager, final ConnectivityService connectivityService, final PowerManagementService powerManagementService ) { Context context = MainApp.getAppContext(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("android.os.action.POWER_SAVE_MODE_CHANGED"); BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (!powerManagementService.isPowerSavingEnabled()) { FilesSyncHelper.restartJobsIfNeeded(uploadsStorageManager, accountManager, connectivityService, powerManagementService); } } }; context.registerReceiver(broadcastReceiver, intentFilter); } }