diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c6ca2650d6..6d6712c4aa 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -22,6 +22,7 @@ android:versionCode="845" android:versionName="5.0.845"> + diff --git a/app/src/main/java/net/bible/android/view/activity/page/MainBibleActivity.kt b/app/src/main/java/net/bible/android/view/activity/page/MainBibleActivity.kt index 0a5c95f655..b65bda57fa 100644 --- a/app/src/main/java/net/bible/android/view/activity/page/MainBibleActivity.kt +++ b/app/src/main/java/net/bible/android/view/activity/page/MainBibleActivity.kt @@ -26,6 +26,8 @@ import android.content.pm.PackageManager import android.content.res.Configuration import android.graphics.Color import android.media.AudioManager +import android.net.ConnectivityManager +import android.net.Network import android.net.Uri import android.os.Build import android.os.Bundle @@ -311,11 +313,21 @@ class MainBibleActivity : CustomTitlebarActivityBase() { } initialized = true } - syncScope.launch { startSync() } if(intent.hasExtra("openLink")) { val uri = Uri.parse(intent.getStringExtra("openLink")) openLink(uri) } + val connManager = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + connManager.registerDefaultNetworkCallback(networkCallback) + } + } + + var networkCallback = object: ConnectivityManager.NetworkCallback() { + override fun onAvailable(network: Network) { + super.onAvailable(network) + syncScope.launch { startSync() } + } } override fun fixNightMode() {} // handle this manually here @@ -1396,7 +1408,6 @@ class MainBibleActivity : CustomTitlebarActivityBase() { windowRepository.saveIntoDb(false) if (force || (now - max(lastSynchronized, lastTouched) > syncInterval && CloudSync.hasChanges())) { Log.i(TAG, "Performing periodic sync") - CommonUtils.settings.setLong("globalLastSynchronized", now) if(!CloudSync.signedIn) { CloudSync.signIn(this@MainBibleActivity) } @@ -1406,6 +1417,12 @@ class MainBibleActivity : CustomTitlebarActivityBase() { } } + fun onEvent(event: CloudSyncEvent) { + if (!event.running) { + CommonUtils.settings.setLong("globalLastSynchronized", now) + } + } + private fun stopPeriodicSync() { syncJob?.cancel() syncJob = null @@ -1418,10 +1435,7 @@ class MainBibleActivity : CustomTitlebarActivityBase() { syncScope.launch { synchronize(true) } } else { updateActions() - syncScope.launch { - delay(5000) // Wait a little bit as wifi might be auto-turned on after returning from sleep - startSync() - } + syncScope.launch { startSync() } } }