From 4a2a1a0550ab5f28fbfe797f64d7d9bc31d958b9 Mon Sep 17 00:00:00 2001 From: jens Date: Sat, 20 Mar 2021 02:44:27 +0100 Subject: [PATCH] Google shit again. --- .../com/jens/automation2/ActivityMainPoi.java | 2 +- .../com/jens/automation2/ActivityMainScreen.java | 6 +++--- .../com/jens/automation2/ActivityManageRule.java | 2 +- .../com/jens/automation2/ActivityPermissions.java | 10 +++++++--- .../com/jens/automation2/AutomationService.java | 15 +++++++++++++-- .../java/com/jens/automation2/Miscellaneous.java | 11 ++++++++--- .../com/jens/automation2/ReceiverCoordinator.java | 5 ++++- app/src/main/res/values-de/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 9 files changed, 39 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/jens/automation2/ActivityMainPoi.java b/app/src/main/java/com/jens/automation2/ActivityMainPoi.java index 065c64bc..6cdda920 100644 --- a/app/src/main/java/com/jens/automation2/ActivityMainPoi.java +++ b/app/src/main/java/com/jens/automation2/ActivityMainPoi.java @@ -53,7 +53,7 @@ public class ActivityMainPoi extends ActivityGeneric @Override public void onClick(View v) { - if(Miscellaneous.googleToBlameForLocation()) + if(Miscellaneous.googleToBlameForLocation(false)) { ActivityMainScreen.openGoogleBlamingWindow(); return; diff --git a/app/src/main/java/com/jens/automation2/ActivityMainScreen.java b/app/src/main/java/com/jens/automation2/ActivityMainScreen.java index d90c8f3d..f5f86620 100644 --- a/app/src/main/java/com/jens/automation2/ActivityMainScreen.java +++ b/app/src/main/java/com/jens/automation2/ActivityMainScreen.java @@ -311,7 +311,7 @@ public class ActivityMainScreen extends ActivityGeneric activityMainScreenInstance.tvMainScreenNoteFeaturesFromOtherFlavor.setVisibility(View.GONE); } - if(Miscellaneous.googleToBlameForLocation()) + if(Miscellaneous.googleToBlameForLocation(true)) { // Intent intent = new Intent(AutomationService.this, ActivityDisplayLongMessage.class); // intent.putExtra("longMessage", getResources().getString(R.string.locationEngineDisabledLong)); @@ -463,8 +463,8 @@ public class ActivityMainScreen extends ActivityGeneric String message = Miscellaneous.getAnyContext().getResources().getText(R.string.locationEngineDisabledLong).toString(); intent.putExtra("messageTitle", Miscellaneous.getAnyContext().getResources().getString(R.string.locationDisabled)); intent.putExtra("longMessage", message); - intent.putExtra("messageLink", "https://f-droid.org/en/packages/com.jens.automation2/"); - Miscellaneous.getAnyContext().startActivity(intent); + intent.putExtra("messageLink", "https://server47.de/automation/fdroidMigration.html"); + ActivityMainScreen.getActivityMainScreenInstance().startActivity(intent); } static void newsOptIn() diff --git a/app/src/main/java/com/jens/automation2/ActivityManageRule.java b/app/src/main/java/com/jens/automation2/ActivityManageRule.java index 1f934fef..2a208094 100644 --- a/app/src/main/java/com/jens/automation2/ActivityManageRule.java +++ b/app/src/main/java/com/jens/automation2/ActivityManageRule.java @@ -502,7 +502,7 @@ public class ActivityManageRule extends Activity String[] booleanChoices = null; if(triggerType == Trigger_Enum.pointOfInterest) { - if(Miscellaneous.googleToBlameForLocation()) + if(Miscellaneous.googleToBlameForLocation(false)) { ActivityMainScreen.openGoogleBlamingWindow(); return; diff --git a/app/src/main/java/com/jens/automation2/ActivityPermissions.java b/app/src/main/java/com/jens/automation2/ActivityPermissions.java index 0f258113..512ae28c 100644 --- a/app/src/main/java/com/jens/automation2/ActivityPermissions.java +++ b/app/src/main/java/com/jens/automation2/ActivityPermissions.java @@ -231,8 +231,9 @@ public class ActivityPermissions extends Activity { for (String s : getRequiredPermissions(false)) { - if (!havePermission(s, context)) - return true; + if(!s.equalsIgnoreCase(permissionNameLocationBackground) && !s.equalsIgnoreCase(permissionNameLocationFine) && !s.equalsIgnoreCase(permissionNameLocationCoarse) && Miscellaneous.googleToBlameForLocation(true)) + if (!havePermission(s, context)) + return true; } } @@ -298,7 +299,10 @@ public class ActivityPermissions extends Activity { for (String singlePermission : getPermissionsForRule(rule)) if (!havePermission(singlePermission, workingContext)) - addToArrayListUnique(singlePermission, requiredPermissions); + { + if(!singlePermission.equalsIgnoreCase(permissionNameLocationBackground) && !singlePermission.equalsIgnoreCase(permissionNameLocationFine) && !singlePermission.equalsIgnoreCase(permissionNameLocationCoarse) && Miscellaneous.googleToBlameForLocation(true)) + addToArrayListUnique(singlePermission, requiredPermissions); + } } } diff --git a/app/src/main/java/com/jens/automation2/AutomationService.java b/app/src/main/java/com/jens/automation2/AutomationService.java index c21e3845..487598d3 100644 --- a/app/src/main/java/com/jens/automation2/AutomationService.java +++ b/app/src/main/java/com/jens/automation2/AutomationService.java @@ -399,7 +399,18 @@ public class AutomationService extends Service implements OnInitListener protected void checkForMissingBackgroundLocationPermission() { - if(Miscellaneous.googleToBlameForLocation()) + if(Miscellaneous.googleToBlameForLocation(true)) + { + Intent intent = new Intent(AutomationService.this, ActivityMainTabLayout.class); + PendingIntent pi = PendingIntent.getActivity(AutomationService.this, 0, intent, 0); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) + Miscellaneous.createDismissableNotificationWithDelay(2200, getResources().getString(R.string.featuresDisabled), notificationIdLocationRestriction, pi); + else + Miscellaneous.createDismissableNotification(getResources().getString(R.string.featuresDisabled), notificationIdLocationRestriction, pi); + } + + /* if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { if (BuildConfig.FLAVOR.equalsIgnoreCase("googlePlayFlavor")) @@ -414,7 +425,7 @@ public class AutomationService extends Service implements OnInitListener Miscellaneous.createDismissableNotification(getResources().getString(R.string.featuresDisabled), notificationIdLocationRestriction, pi); } } - } + }*/ } public static void startAutomationService(Context context, boolean startAtBoot) diff --git a/app/src/main/java/com/jens/automation2/Miscellaneous.java b/app/src/main/java/com/jens/automation2/Miscellaneous.java index d55576cf..6b6441e9 100644 --- a/app/src/main/java/com/jens/automation2/Miscellaneous.java +++ b/app/src/main/java/com/jens/automation2/Miscellaneous.java @@ -1187,16 +1187,21 @@ public class Miscellaneous extends Service return returnValue; } - public static boolean googleToBlameForLocation() + public static boolean googleToBlameForLocation(boolean checkExistingRules) { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { if (BuildConfig.FLAVOR.equalsIgnoreCase("googlePlayFlavor")) { - if (Rule.isAnyRuleUsing(Trigger.Trigger_Enum.pointOfInterest)) + if(checkExistingRules) { - return true; + if (Rule.isAnyRuleUsing(Trigger.Trigger_Enum.pointOfInterest)) + { + return true; + } } + else + return true; } } diff --git a/app/src/main/java/com/jens/automation2/ReceiverCoordinator.java b/app/src/main/java/com/jens/automation2/ReceiverCoordinator.java index 8435e976..b833da8d 100644 --- a/app/src/main/java/com/jens/automation2/ReceiverCoordinator.java +++ b/app/src/main/java/com/jens/automation2/ReceiverCoordinator.java @@ -145,7 +145,10 @@ public class ReceiverCoordinator // startCellLocationChangedReceiver if(!ConnectivityReceiver.isAirplaneMode(AutomationService.getInstance()) && WifiBroadcastReceiver.mayCellLocationReceiverBeActivated() && (Rule.isAnyRuleUsing(Trigger.Trigger_Enum.pointOfInterest) | Rule.isAnyRuleUsing(Trigger.Trigger_Enum.speed))) - CellLocationChangedReceiver.startCellLocationChangedReceiver(); + { + if(!Miscellaneous.googleToBlameForLocation(true)) + CellLocationChangedReceiver.startCellLocationChangedReceiver(); + } // startBatteryReceiver if(Rule.isAnyRuleUsing(Trigger.Trigger_Enum.charging) | Rule.isAnyRuleUsing(Trigger.Trigger_Enum.usb_host_connection) | Rule.isAnyRuleUsing(Trigger.Trigger_Enum.batteryLevel)) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index a7ce71ec..e949aa21 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -596,5 +596,5 @@ veröffentlicht am Automation benutzt jetzt ein anderes Verzeichnis, um Ihre Daten zu speichern. Alle Ihre Automation-Dateien wurden hierhin verschoben: \"%s\". Die Berechtigung für den externen Speicher wird nun nicht mehr benötigt; Sie können Sie entfernen. In einer künftigen Version wird sie entfernt werden. Die Position kann nicht mehr bestimmt werden. - Leider kann die Position nicht mehr bestimmt werden. Großer Dank dafür geht an Google für seine unendliche Weisheit und Großzügigkeit.\\n\\nBeginnend mit Android 10 wurde eine neue Berechtigung eingeführt, die benötigt wird, um als App die Position auch im Hintergrund bestimmen zu können, was, für eine App wie diese, natürlich notwendig ist.\\n\\nWährend ich das grundsätzlich für eine gute Idee halte, gilt das nicht für die Schikane, die damit verbunden ist.\\n\\nWenn man eine App entwickelt, kann man versuchen sich für diese Berechtigung zu qualifizieren, indem man einen Katalog von Bedingungen erfüllt. Leider wurden neue Versionen meiner Anwendung über einen Zeitraum von drei Monaten immer wieder abgelehnt.\\n\\nDas lief auf die immer gleiche Art ab:\\n\\nIch habe eine neue Version eingereicht, die all diese Anforderungen erfüllt hat.\\n\\nGoogles miserabler Entwickler-Support behauptete ich würde sie nicht einhalten.\\n\\nIch habe Beweise geliefert, daß ich alles einhalte.
Ich bekam eine Antwort wie "Ich kann Ihnen nicht weiterhelfen.\\n\\nIrgendwann habe ich aufgegeben.\\n\\nDie Folge davon ist nun, daß die Google Play Version keine Positionsbestimmung mehr im Hintergrund durchführen kann. Die Alternative wäre es gewesen, daß die ganze Anwendung aus dem Store fliegt.\\n\\nDas tut mir sehr leid, aber ich habe mein Bestes gegeben mit einem Kunden\"dienst\" zu diskutieren, der mehrfach beim Turing-Test durchgefallen ist.\\n\\nDie gute Nachricht - die Anwendung kann es immer noch!\\n\\nAutomation ist nun Open Source Software und kann ab sofort bei F-Droid heruntergeladen werden. F-Droid ist ein freier Appstore, der Ihre Privatsphäre respektiert - statt nur so zu tun wie Google das macht.\\n\\nDeinstallieren Sie dazu diese Anwendung und installieren Sie sich bei F-Droid neu.\\n\\nKlicken Sie hier, um mehr herauszufinden:
+ Leider kann die Position nicht mehr bestimmt werden. Großer Dank dafür geht an Google für seine unendliche Weisheit und Großzügigkeit.\\n\\nBeginnend mit Android 10 wurde eine neue Berechtigung eingeführt, die benötigt wird, um als App die Position auch im Hintergrund bestimmen zu können, was, für eine App wie diese, natürlich notwendig ist.\\n\\nWährend ich das grundsätzlich für eine gute Idee halte, gilt das nicht für die Schikanen, die man Entwicklern damit zumutet.\\n\\nWenn man eine App entwickelt, kann man versuchen sich für diese Berechtigung zu qualifizieren, indem man einen Katalog von Bedingungen erfüllt. Leider wurden neue Versionen meiner Anwendung über einen Zeitraum von drei Monaten immer wieder abgelehnt.\\n\\nDas lief auf die immer gleiche Art ab:\\n\\nIch habe eine neue Version eingereicht, die all diese Anforderungen erfüllt hat.\\n\\nGoogles miserabler Entwickler-Support behauptete ich würde sie nicht einhalten.\\n\\nIch habe Beweise geliefert, daß ich alles einhalte.
Ich bekam eine Antwort wie "Ich kann Ihnen nicht weiterhelfen.\\n\\nIrgendwann habe ich aufgegeben.\\n\\nDie Folge davon ist nun, daß die Google Play Version keine Positionsbestimmung mehr im Hintergrund durchführen kann. Meine einzige Alternative wäre es gewesen, daß die ganze Anwendung aus dem Store fliegt.\\n\\nDas tut mir sehr leid, aber ich habe mein Bestes gegeben mit einem Kunden\"dienst\" zu diskutieren, der mehrfach beim Turing-Test durchgefallen ist.\\n\\nDie gute Nachricht: Die Anwendung kann es immer noch!\\n\\nAutomation ist nun Open Source Software und kann ab sofort bei F-Droid heruntergeladen werden. F-Droid ist ein freier Appstore, der Ihre Privatsphäre respektiert - statt nur so zu tun wie Google das macht.\\n\\nSichern Sie Ihre Konfiguratinsdatei, deinstallieren Sie dazu diese Anwendung, installieren sie von F-Droid neu, Konfigurationsdatei zurückspielen und fertig.\\n\\nKlicken Sie hier, um mehr herauszufinden:
\ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5b3bf13a..21f1df21 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -609,5 +609,5 @@ Would you like to receive (only important) news about this app on the main screen? Those are downloaded from the developer\'s website. There will be no intrusive notification, just a text on the main screen when you open the app. Location disabled Location cannot be determined anymore. Click here to find out why. - Unfortunately your location cannot be determined anymore. A debt of gratitude is owed to Google for its infinite wisdom and amiableness.\\n\\nLet me explain this further. Starting with Android 10 a new permission was introduced that is needed to determine your location in the background (which of course is required for an app like this). Whilst I consider that a good idea the chicanery it involves are not.\\n\\nWhen developing an app you can try to qualify for this permission by abiding to a catalog of requirements. Unfortunately new versions of my app have been rejected over a period of three months. I fulfilled all these requirements, Google\'s shitty development support claimed I would not. After giving them proof that I did after all - I got a response like \"I cannot help you anymore\". Eventually I gave up. \\n\\nAs a consequence the Google Play version can NOT use your location as a trigger anymore. The alternative would have been to have this application removed from the store entirely.\\n\\nI\'m very sorry about that, but I\'ve tried my best arguing with a \"support\" that repeatedly failed to pass the Turing test.\\n\\nThe good news - You can still have it all:\\n\\nAutomation is now open source and can be found in F-Droid. That is an app store that really cares about your privacy - rather than just acting like that. Simply uninstall this app and install it again from F-Droid.\\n\\nClick here to find out more: + Unfortunately your location cannot be determined anymore. A debt of gratitude is owed to Google for its infinite wisdom and amiableness.\\n\\nLet me explain this further. Starting with Android 10 a new permission was introduced that is needed to determine your location in the background (which of course is required for an app like this). Whilst I consider that a good idea in general the chicanery it involves for developers are not.\\n\\nWhen developing an app you can try to qualify for this permission by abiding to a catalog of requirements. Unfortunately new versions of my app have been rejected over a period of three months. I fulfilled all these requirements, Google\'s shitty development support claimed I would not. After giving them proof that I did after all - I got a response like \"I cannot help you anymore\". Eventually I gave up. \\n\\nAs a consequence the Google Play version can NOT use your location as a trigger anymore. My only alternative option would have been to have this application removed from the store entirely.\\n\\nI\'m very sorry about that, but I\'ve tried my best arguing with a \"support\" that repeatedly failed to pass the Turing test.\\n\\nThe good news: You can still have it all!\\n\\nAutomation is now open source and can be found in F-Droid. That is an app store that really cares about your privacy - rather than just acting like that. Simply backup your config file, uninstall this app, install it again from F-Droid, restore your config file - done.\\n\\nClick here to find out more: \ No newline at end of file