diff --git a/app/src/generic/java/org/tasks/gtasks/PlayServices.kt b/app/src/generic/java/org/tasks/gtasks/PlayServices.kt
deleted file mode 100644
index f5c58f65d..000000000
--- a/app/src/generic/java/org/tasks/gtasks/PlayServices.kt
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.tasks.gtasks
-
-import android.app.Activity
-import com.todoroo.astrid.activity.MainActivity
-import io.reactivex.disposables.Disposable
-import io.reactivex.disposables.Disposables
-import javax.inject.Inject
-
-@Suppress("UNUSED_PARAMETER")
-class PlayServices @Inject constructor() {
- val isPlayServicesAvailable: Boolean
- get() = false
-
- fun refreshAndCheck(): Boolean {
- return false
- }
-
- fun resolve(activity: Activity?) {}
-
- val status: String?
- get() = null
-
- fun check(mainActivity: MainActivity?): Disposable {
- return Disposables.empty()
- }
-}
\ No newline at end of file
diff --git a/app/src/generic/res/values/keys.xml b/app/src/generic/res/values/keys.xml
index f2656b6dc..0b56e72d9 100644
--- a/app/src/generic/res/values/keys.xml
+++ b/app/src/generic/res/values/keys.xml
@@ -7,5 +7,4 @@
%s
support@tasks.org
1
- 1
\ No newline at end of file
diff --git a/app/src/googleplay/java/org/tasks/gtasks/PlayServices.kt b/app/src/googleplay/java/org/tasks/gtasks/PlayServices.kt
index 029e42937..8ed500012 100644
--- a/app/src/googleplay/java/org/tasks/gtasks/PlayServices.kt
+++ b/app/src/googleplay/java/org/tasks/gtasks/PlayServices.kt
@@ -1,65 +1,12 @@
package org.tasks.gtasks
-import android.app.Activity
import android.content.Context
-import android.widget.Toast
import com.google.android.gms.common.ConnectionResult
-import com.google.android.gms.common.GoogleApiAvailability
+import com.google.android.gms.common.GoogleApiAvailability.getInstance
import dagger.hilt.android.qualifiers.ApplicationContext
-import org.tasks.R
-import org.tasks.data.LocationDao
-import org.tasks.preferences.Preferences
-import timber.log.Timber
import javax.inject.Inject
-class PlayServices @Inject constructor(
- @param:ApplicationContext private val context: Context,
- private val preferences: Preferences,
- private val locationDao: LocationDao) {
-
- suspend fun check(activity: Activity?) {
- val playServicesAvailable = locationDao.geofenceCount() == 0 || refreshAndCheck()
- if (!playServicesAvailable && !preferences.getBoolean(R.string.warned_play_services, false)) {
- preferences.setBoolean(R.string.warned_play_services, true)
- resolve(activity)
- }
- }
-
- fun refreshAndCheck(): Boolean {
- refresh()
- return isPlayServicesAvailable
- }
-
- val isPlayServicesAvailable: Boolean
- get() = result == ConnectionResult.SUCCESS
-
- private fun refresh() {
- val instance = GoogleApiAvailability.getInstance()
- val googlePlayServicesAvailable = instance.isGooglePlayServicesAvailable(context)
- preferences.setInt(R.string.play_services_available, googlePlayServicesAvailable)
- if (googlePlayServicesAvailable == ConnectionResult.SUCCESS) {
- preferences.setBoolean(R.string.warned_play_services, false)
- }
- Timber.d(status)
- }
-
- fun resolve(activity: Activity?) {
- val googleApiAvailability = GoogleApiAvailability.getInstance()
- val error = preferences.getInt(R.string.play_services_available, -1)
- if (googleApiAvailability.isUserResolvableError(error)) {
- googleApiAvailability.getErrorDialog(activity, error, REQUEST_RESOLUTION).show()
- } else {
- Toast.makeText(activity, status, Toast.LENGTH_LONG).show()
- }
- }
-
- private val status: String
- get() = GoogleApiAvailability.getInstance().getErrorString(result)
-
- private val result: Int
- get() = preferences.getInt(R.string.play_services_available, -1)
-
- companion object {
- private const val REQUEST_RESOLUTION = 10000
- }
+object PlayServices {
+ fun isAvailable(context: Context) =
+ getInstance().isGooglePlayServicesAvailable(context) == ConnectionResult.SUCCESS
}
\ No newline at end of file
diff --git a/app/src/googleplay/java/org/tasks/injection/FlavorModule.kt b/app/src/googleplay/java/org/tasks/injection/FlavorModule.kt
index 0fa3d0212..66106e420 100644
--- a/app/src/googleplay/java/org/tasks/injection/FlavorModule.kt
+++ b/app/src/googleplay/java/org/tasks/injection/FlavorModule.kt
@@ -1,9 +1,11 @@
package org.tasks.injection
+import android.content.Context
import dagger.Lazy
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
+import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import org.tasks.gtasks.PlayServices
import org.tasks.location.*
@@ -12,12 +14,16 @@ import org.tasks.location.*
@InstallIn(SingletonComponent::class)
class FlavorModule {
@Provides
- fun getLocationService(service: LocationServiceGooglePlay): LocationService = service
+ fun getLocationService(
+ @ApplicationContext context: Context,
+ google: Lazy,
+ android: Lazy
+ ): LocationService = if (PlayServices.isAvailable(context)) google.get() else android.get()
@Provides
fun getMapFragment(
- playServices: PlayServices,
+ @ApplicationContext context: Context,
osm: Lazy,
google: Lazy,
- ): MapFragment = if (playServices.isPlayServicesAvailable) google.get() else osm.get()
+ ): MapFragment = if (PlayServices.isAvailable(context)) google.get() else osm.get()
}
\ No newline at end of file
diff --git a/app/src/googleplay/res/values/keys.xml b/app/src/googleplay/res/values/keys.xml
index 502268675..27376c412 100644
--- a/app/src/googleplay/res/values/keys.xml
+++ b/app/src/googleplay/res/values/keys.xml
@@ -1,11 +1,9 @@
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk8mXRE3dDXwtinUILCEzKjov2rxs3kZbLRzNrcjFWXpG9OEsUzRGLzqEN+WwibVuMRpZLj/+IxbU2sJWq/M0q+90rOhmXn46ZPeNyr77IqX2pWKIAWpzBoWq/mshRwtm9m1FIiGdBNlXrhSE7u3TGB5FuEuuSqKWvWzxeqQ7fHmlM04Lqrh1mN3FaMne8rWv+DWVHDbLrtnXBuC36glOAj17HxrzaE2v6Pv7Df3QefJ3rM1+0fAp/5jNInaP0qHAlG8WTbUmDShQ5kG3urbv3HLByyx6TSqhmNudXUK/6TusvIj50OptAG7x+UFYf956dD3diXhY3yoICvyFWx1sNwIDAQAB
- play_services_available
market://details?id=org.tasks
purchases
https://play.google.com/store/account/subscriptions?sku=%s&package=org.tasks
play-support@tasks.org
0
- 0
\ No newline at end of file
diff --git a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt
index e0018be9a..b94089ed3 100644
--- a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt
+++ b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt
@@ -41,7 +41,6 @@ import org.tasks.dialogs.SortDialog.SortDialogCallback
import org.tasks.dialogs.WhatsNewDialog
import org.tasks.filters.PlaceFilter
import org.tasks.fragments.CommentBarFragment.CommentBarFragmentCallback
-import org.tasks.gtasks.PlayServices
import org.tasks.injection.InjectingAppCompatActivity
import org.tasks.intents.TaskIntents.getTaskListIntent
import org.tasks.location.LocationPickerActivity
@@ -66,7 +65,6 @@ class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandl
@Inject lateinit var taskDao: TaskDao
@Inject lateinit var localBroadcastManager: LocalBroadcastManager
@Inject lateinit var taskCreator: TaskCreator
- @Inject lateinit var playServices: PlayServices
@Inject lateinit var inventory: Inventory
@Inject lateinit var colorProvider: ColorProvider
@Inject lateinit var locationDao: LocationDao
@@ -489,12 +487,6 @@ class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandl
taskEditFragment!!.onRemoteListChanged(filter)
}
- init {
- lifecycleScope.launchWhenResumed {
- playServices.check(this@MainActivity)
- }
- }
-
companion object {
/** For indicating the new list screen should be launched at fragment setup time */
const val TOKEN_CREATE_NEW_LIST_NAME = "newListName" // $NON-NLS-1$
diff --git a/app/src/main/java/org/tasks/location/GeofenceApi.kt b/app/src/main/java/org/tasks/location/GeofenceApi.kt
index aa9cb907d..b9a78a477 100644
--- a/app/src/main/java/org/tasks/location/GeofenceApi.kt
+++ b/app/src/main/java/org/tasks/location/GeofenceApi.kt
@@ -13,8 +13,6 @@ class GeofenceApi @Inject constructor(
) {
suspend fun registerAll() = locationDao.getPlacesWithGeofences().forEach { update(it) }
- suspend fun cancelAll() = locationDao.getPlacesWithGeofences().forEach { cancel(it) }
-
suspend fun update(taskId: Long) = update(locationDao.getPlaceForTask(taskId))
suspend fun update(place: String) = update(locationDao.getPlace(place))
@@ -28,11 +26,9 @@ class GeofenceApi @Inject constructor(
Timber.d("Adding geofence for %s", it)
locationService.addGeofences(it)
}
- ?: cancel(place)
- }
-
- private fun cancel(place: Place?) = place?.let {
- Timber.d("Removing geofence for %s", place)
- locationService.removeGeofences(place)
+ ?: place.let {
+ Timber.d("Removing geofence for %s", it)
+ locationService.removeGeofences(it)
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/org/tasks/preferences/fragments/LocationPreferences.kt b/app/src/main/java/org/tasks/preferences/fragments/LocationPreferences.kt
index b4c5b6c61..683302b24 100644
--- a/app/src/main/java/org/tasks/preferences/fragments/LocationPreferences.kt
+++ b/app/src/main/java/org/tasks/preferences/fragments/LocationPreferences.kt
@@ -2,44 +2,25 @@ package org.tasks.preferences.fragments
import android.content.Intent
import android.os.Bundle
-import androidx.lifecycle.lifecycleScope
-import androidx.preference.Preference
import androidx.preference.SwitchPreference
import dagger.hilt.android.AndroidEntryPoint
-import kotlinx.coroutines.NonCancellable
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.withContext
import org.tasks.R
-import org.tasks.Tasks.Companion.IS_GOOGLE_PLAY
import org.tasks.billing.Inventory
-import org.tasks.gtasks.PlayServices
import org.tasks.injection.InjectingPreferenceFragment
-import org.tasks.location.GeofenceApi
import org.tasks.location.LocationPermissionDialog.Companion.newLocationPermissionDialog
import org.tasks.preferences.PermissionChecker
import org.tasks.preferences.Preferences
-import org.tasks.ui.Toaster
import javax.inject.Inject
@AndroidEntryPoint
class LocationPreferences : InjectingPreferenceFragment() {
- @Inject lateinit var playServices: PlayServices
- @Inject lateinit var inventory: Inventory
- @Inject lateinit var toaster: Toaster
- @Inject lateinit var geofenceApi: GeofenceApi
@Inject lateinit var permissionChecker: PermissionChecker
@Inject lateinit var preferences: Preferences
override fun getPreferenceXml() = R.xml.preferences_location
override suspend fun setupPreferences(savedInstanceState: Bundle?) {
- if (IS_GOOGLE_PLAY) {
- findPreference(R.string.p_geofence_service)
- .setOnPreferenceChangeListener(this::onGeofenceServiceChanged)
- } else {
- disable(R.string.p_geofence_service)
- }
}
override fun onResume() {
@@ -62,29 +43,6 @@ class LocationPreferences : InjectingPreferenceFragment() {
false
}
}
- findPreference(R.string.p_geofence_service).isEnabled = hasPermissions && IS_GOOGLE_PLAY
- }
-
- private fun onGeofenceServiceChanged(preference: Preference, newValue: Any): Boolean =
- if (newValue.toString().toIntOrNull() ?: 0 == 1) {
- if (!playServices.refreshAndCheck()) {
- playServices.resolve(activity)
- false
- } else {
- geofenceChanged()
- }
- } else {
- geofenceChanged()
- }
-
- private fun geofenceChanged(): Boolean {
- lifecycleScope.launch {
- withContext(NonCancellable) {
- geofenceApi.cancelAll()
- }
- showRestartDialog()
- }
- return true
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) =
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index fbe977a04..084c19e16 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -697,9 +697,6 @@
Tasks.org cuenta
Suscripción
Mostrar título
- Servicio de localización de Android
- Servicio de localización de Google Play
- Servicio de geovallas
Recordatorios basados en la ubicación
Utilizar el tema de la aplicación
Mapas
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index e9cbd3bab..a0093e46d 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -694,9 +694,6 @@
Afficher le titre
Géocodeur inversé
Thème de la carte
- Service de localisation Android
- Service de localisation Google Play
- Service Geofence
Rappels basés sur la localisation
Utiliser le thème de l’application
Cartes
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index 9bb74c57d..3e7c51a51 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -695,9 +695,6 @@
Alapértelmezett kezdő dátum
Kezdés dátuma szerint
Cím megjelenítése
- Android hely szolgáltatás
- Google Play hely szolgáltatás
- Geokerítés szolgáltatás
Hely alapú emlékeztetők
Fordított geokódoló
Alkalmazás témájának használata
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 01bb15242..135f03171 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -693,9 +693,6 @@
Abonnement
Toon titel
Omgekeerde geocoder
- Android-locatieservice
- Google Play-locatieservice
- Geofence-service
Locatiegebaseerde herinneringen
Kaartthema
Gebruik app-thema
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 9ab54e053..a669c3bc3 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -717,9 +717,6 @@
Обліковий запис Tasks.org
Підписка
Показати заголовок
- Служба визначення розташування Android
- Служба розташування Google Play
- Служба геозон
Нагадування на основі розташування
Використовувати тему застосунку
Карти
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 5e510b8f3..e783e3de5 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -687,9 +687,6 @@
Tasks.org 账户
订阅
显示标题
- 安卓位置服务
- Google Play 位置服务
- 地理围栏服务
基于位置的提醒
使用应用主题
地图
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 832ef581c..bc3aeddd3 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -281,14 +281,4 @@
- 1
- 2
-
-
- - @string/google_play_location_service
- - @string/android_location_services
-
-
-
- - 0
- - 1
-
\ No newline at end of file
diff --git a/app/src/main/res/values/keys.xml b/app/src/main/res/values/keys.xml
index 2d5316b88..63a314b7a 100644
--- a/app/src/main/res/values/keys.xml
+++ b/app/src/main/res/values/keys.xml
@@ -382,7 +382,6 @@
p_flipper
debug_pro
debug_crash_main_queries
- warned_play_services
sync_ongoing_google_tasks
sync_ongoing_caldav
sync_ongoing_etesync
@@ -399,7 +398,6 @@
Nominatim
Android
location_based_reminders
- geofence_service
preference_screen
google_tasks_add_to_top
google_tasks_position_hack
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b8f73368c..b54e5e19c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -703,7 +703,4 @@ File %1$s contained %2$s.\n\n
Maps
Use app theme
Location-based reminders
- Geofence service
- Google Play location service
- Android location service
diff --git a/app/src/main/res/xml/preferences_location.xml b/app/src/main/res/xml/preferences_location.xml
index fdb77657c..82d477526 100644
--- a/app/src/main/res/xml/preferences_location.xml
+++ b/app/src/main/res/xml/preferences_location.xml
@@ -10,14 +10,6 @@
android:key="@string/p_location_based_reminders"
android:title="@string/enabled" />
-
-