From f641de9893f6b3b90fe314c844c1dcaed26ed56e Mon Sep 17 00:00:00 2001 From: jens Date: Tue, 19 Dec 2023 16:54:10 +0100 Subject: [PATCH] Take screenshot action added --- .../jens/automation2/ActivityPermissions.java | 65 ++++++++++++------- .../main/res/layout/permissions_activity.xml | 6 ++ app/src/main/res/values-de/strings.xml | 7 ++ app/src/main/res/values-es/strings.xml | 11 +++- app/src/main/res/values-fr/strings.xml | 7 ++ app/src/main/res/values-it/strings.xml | 7 ++ app/src/main/res/values-nl/strings.xml | 7 ++ app/src/main/res/values-pl/strings.xml | 7 ++ app/src/main/res/values-ru/strings.xml | 7 ++ app/src/main/res/values-zh-rCN/strings.xml | 7 ++ app/src/main/res/values/strings.xml | 3 +- 11 files changed, 106 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/com/jens/automation2/ActivityPermissions.java b/app/src/main/java/com/jens/automation2/ActivityPermissions.java index 87b4716..bd04ea0 100644 --- a/app/src/main/java/com/jens/automation2/ActivityPermissions.java +++ b/app/src/main/java/com/jens/automation2/ActivityPermissions.java @@ -58,7 +58,7 @@ public class ActivityPermissions extends Activity public static String intentExtraName = "permissionsToBeRequested"; Button bCancelPermissions, bRequestPermissions; - TextView tvPermissionsExplanation, tvPermissionsExplanationSystemSettings, tvPermissionsExplanationLong; + TextView tvPermissionsExplanation, tvPermissionsExplanationSystemSettings, tvPermissionsExplanationLong, tvRestrictionPermissionsNotice; static ActivityPermissions instance = null; public final static String permissionNameWireguard = "com.wireguard.android.permission.CONTROL_TUNNELS"; @@ -89,6 +89,7 @@ public class ActivityPermissions extends Activity tvPermissionsExplanation = (TextView)findViewById(R.id.tvPermissionsExplanation); tvPermissionsExplanationSystemSettings = (TextView)findViewById(R.id.tvPermissionsExplanationSystemSettings); tvPermissionsExplanationLong = (TextView)findViewById(R.id.tvPermissionsExplanationLong); + tvRestrictionPermissionsNotice = (TextView)findViewById(R.id.tvRestrictionPermissionsNotice); bCancelPermissions.setOnClickListener(new View.OnClickListener() { @@ -424,10 +425,13 @@ public class ActivityPermissions extends Activity if(!havePermission(Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, workingContext)) addToArrayListUnique(Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, requiredPermissions); - for(Profile p : Profile.getProfileCollection()) + if(!havePermission(Manifest.permission.READ_EXTERNAL_STORAGE, workingContext)) { - if(p.changeIncomingCallsRingtone || p.changeNotificationRingtone) - addToArrayListUnique(Manifest.permission.READ_EXTERNAL_STORAGE, requiredPermissions); + for (Profile p : Profile.getProfileCollection()) + { + if (p.changeIncomingCallsRingtone || p.changeNotificationRingtone) + addToArrayListUnique(Manifest.permission.READ_EXTERNAL_STORAGE, requiredPermissions); + } } if (!onlyGeneral) @@ -461,27 +465,6 @@ public class ActivityPermissions extends Activity } } } - - /* - Not all permissions need to be asked for. - */ - - /*if(shouldShowRequestPermissionRationale("android.permission.RECORD_AUDIO")) - Toast.makeText(ActivityMainScreen.this, "shouldShowRequestPermissionRationale", Toast.LENGTH_LONG).show(); - else - Toast.makeText(ActivityMainScreen.this, "not shouldShowRequestPermissionRationale", Toast.LENGTH_LONG).show();*/ - -// addToArrayListUnique("Manifest.permission.RECORD_AUDIO", requiredPermissions); - /*int hasPermission = checkSelfPermission(Manifest.permission.RECORD_AUDIO); - if (hasPermission == PackageManager.PERMISSION_DENIED) - { - Toast.makeText(ActivityMainScreen.this, "Don't have record_audio. Requesting...", Toast.LENGTH_LONG).show(); -// requestPermissions(new String[]{"Manifest.permission.CAMERA"}, requestCodeForPermissions); - ActivityCompat.requestPermissions(ActivityMainScreen.this, new String[]{"Manifest.permission.CAMERA"}, requestCodeForPermissions); - } - else - Toast.makeText(ActivityMainScreen.this, "Have record_audio.", Toast.LENGTH_LONG).show();*/ - } return requiredPermissions.toArray(new String[requiredPermissions.size()]); @@ -1158,10 +1141,14 @@ public class ActivityPermissions extends Activity } else if (s.equalsIgnoreCase(Manifest.permission.ACCESS_NOTIFICATION_POLICY)) { + if(BuildConfig.FLAVOR.equals(AutomationService.flavor_name_apk)) + Miscellaneous.messageBox(getResources().getString(R.string.info), getResources().getString(R.string.noticeRestrictedPermissions), ActivityPermissions.this).show(); + requiredPermissions.remove(s); cachedPermissionsToRequest = requiredPermissions; Intent intent = new Intent(android.provider.Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS); startActivityForResult(intent, requestCodeForPermissionsNotificationPolicy); + return; } else if (s.equalsIgnoreCase(Manifest.permission.SYSTEM_ALERT_WINDOW)) @@ -1684,6 +1671,34 @@ public class ActivityPermissions extends Activity { super.onResume(); + if(Build.VERSION.SDK_INT >= 33 && BuildConfig.FLAVOR.equals(AutomationService.flavor_name_apk)) + { + for (String p : getRequiredPermissions(false)) + { + if (p.equals(Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE) || p.equals(Manifest.permission.BIND_ACCESSIBILITY_SERVICE)) + { + tvRestrictionPermissionsNotice.setText(getResources().getString(R.string.noticeRestrictedPermissions)); + + /* + Opening the app's settings directly does not work because the + mentioned 3 dots are only displayed when you went there the hard way. + */ + /* + tvRestrictionPermissionsNotice.setOnClickListener(new View.OnClickListener() + { + @Override + public void onClick(View view) + { + Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + intent.setData(Uri.parse("package:" + getPackageName())); + startActivity(intent); + } + })*/; + break; + } + } + } + for(String p : getRequiredPermissions(false)) { if(!havePermission(p, this)) diff --git a/app/src/main/res/layout/permissions_activity.xml b/app/src/main/res/layout/permissions_activity.xml index 83dd436..2b0567b 100644 --- a/app/src/main/res/layout/permissions_activity.xml +++ b/app/src/main/res/layout/permissions_activity.xml @@ -66,6 +66,12 @@ + + Dieser Auslöser ist gültig, wenn Sie gerade die Verbindung zu dem oben angegebenen WLAN getrennt haben ODER während der Dienst noch gestartet wird und wenn Sie mit keinem WLAN verbunden sind. Wenn Sie möchten, dass der Auslöser nur ausgelöst wird, wenn Sie die Verbindung zu einem bestimmten WLAN explizit trennen, fügen Sie einen weiteren Auslöser hinzu: \"Der Dienst wird nicht gestartet\". Klassenname per startForegroundService() + Methode + Screenshot erstellen + An den Barrierefreiheitsdienst anbinden + An den Barrierefreiheitsdienst anbinden + Nachdem Sie auf OK geklickt haben, werden Sie zu einem Systemdialog weitergeleitet. Bitte wählen Sie dort Automatisierung aus und erlauben Sie die Barrierefreiheits-API. + Erforderlich für bestimmte Aktionen. + Wenn Sie eine der folgenden Berechtigungen nicht erteilen und eine Systemmeldung wie \"Eingeschränkte Berechtigung\" erhalten, müssen Sie zuerst zu den Android-Einstellungen und dann zu den Anwendungen gehen und Automatisierung auswählen. Nun sollten sich 3 Punkte in der oberen rechten Ecke befinden. Klicken Sie auf \"Eingeschränkte Einstellungen zulassen\". Danach sollte die erforderliche Erlaubnis erteilt werden können. Dies sollte nur für die APK-Version der App gelten, nicht für die von F-Droid oder dem Play Store. \ No newline at end of file diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index a6852db..2b1aa29 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -43,7 +43,7 @@ Inserte un nombre. Nombre de usuario Ok - continuar + Continuar Regla Enviar mensajes SMS Leer directorio @@ -197,7 +197,7 @@ Grabar audio Detectar llamadas salientes Detectar el estado del dispositivo - Leer la almacenamiento + Leer el almacenamiento Escribir en el almacenamiento Modificar la configuración del dispositivo Determinar el estado de la bateria @@ -801,4 +801,11 @@ Este activador será válido si acabas de desconectarte del wifi especificado anteriormente O mientras el servicio aún se está iniciando y si no estás conectado a ningún wifi. Si desea que el activador se active solo cuando se desconecte explícitamente de una determinada red WiFi, agregue otro activador \"el servicio no se está iniciando\". Nombre de la clase a través de startForegroundService(( + Método + Tomar captura de pantalla + Enlazar al servicio de accesibilidad + Enlazar al servicio de accesibilidad + Después de hacer clic en Aceptar, se le enviará a un cuadro de diálogo del sistema. Seleccione Automatización allí y permita Permitir API de accesibilidad. + Requerido para ciertas acciones. + Si no le otorga a uno el siguiente permiso y un mensaje del sistema como \"Ajuste restringido\", primero debe ir a la configuración de Android, luego a las aplicaciones, elija Automatización. Ahora debería haber 3 puntos en la esquina superior derecha. Haga clic en \"Permitir configuraciones restringidas\". Después de eso, el permiso necesario debería poder otorgarse. Esto solo debería aplicarse a la versión APK de la aplicación, no a las de F-Droid o Play Store. \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index ba24aef..59ccb7b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -801,4 +801,11 @@ Ce déclencheur sera valide si vous venez de vous déconnecter du wifi spécifié ci-dessus OU alors que le service est encore en cours de démarrage et si vous n\'êtes connecté à aucun wifi. Si vous souhaitez que le déclencheur ne se déclenche que lorsque vous vous déconnectez explicitement d\'un certain wifi, ajoutez un autre déclencheur « le service ne démarre pas ». Nom de la classe par startForegroundService() + Méthode + Prendre une capture d\'écran + Se lier au service d\'accessibilité + Se lier au service d\'accessibilité + Après avoir cliqué sur OK, vous serez redirigé vers une boîte de dialogue système. Sélectionnez Automatisation et autorisez l\'option Autoriser l\'API d\'accessibilité. + Obligatoire pour certaines actions. + Si vous ne parvenez pas à accorder à l\'un d\'entre eux l\'autorisation suivante et un message système tel que « Autorisation restreinte », vous devez d\'abord accéder aux paramètres Android, puis aux applications, puis choisir Automatisation. Maintenant, il devrait y avoir 3 points dans le coin supérieur droit. Cliquez sur « Autoriser les paramètres restreints ». Après cela, l\'autorisation nécessaire devrait pouvoir être accordée. Cela ne devrait s\'appliquer qu\'à la version APK de l\'application, pas à celles de F-Droid ou du Play Store. diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 2268f49..6fb5328 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -802,4 +802,11 @@ Questo trigger sarà valido se ti sei appena disconnesso dal Wi-Fi specificato sopra OPPURE mentre il servizio è ancora in fase di avvio e se non sei connesso a nessuna rete Wi-Fi. Se vuoi che il trigger si attivi solo quando ti stai disconnettendo esplicitamente da una determinata rete Wi-Fi, aggiungi un altro trigger \"il servizio non si avvia\". Nome della classe di startForegroundService() + Metodo + Fai uno screenshot + Associare al servizio di accessibilità + Associare al servizio di accessibilità + Dopo aver fatto clic su OK, verrà visualizzata una finestra di dialogo di sistema. Seleziona Automazione e consenti Consenti API di accessibilità. + Obbligatorio per determinate azioni. + Se non riesci a concedere una delle seguenti autorizzazioni e un messaggio di sistema come \"Autorizzazione limitata\", devi prima andare alle impostazioni di Android, quindi alle applicazioni, scegli Automazione. Ora dovrebbero esserci 3 punti nell\'angolo in alto a destra. Fai clic su \"Consenti impostazioni limitate\". Dopodiché dovrebbe essere concessa l\'autorizzazione necessaria. Questo dovrebbe valere solo per la versione APK dell\'app, non per quelle di F-Droid o Play Store. diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 67866c4..f6c296a 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -800,5 +800,12 @@ Deze trigger is geldig als je net de verbinding met de hierboven gespecificeerde wifi hebt verbroken OF terwijl de service nog aan het starten is en als je niet verbonden bent met wifi. Als je wilt dat de trigger alleen wordt geactiveerd wanneer je expliciet de verbinding met een bepaalde wifi verbreekt, voeg dan nog een trigger toe \"service start niet\". Naam van de klasse door startForegroundService() + Methode + Screenshot maken + Binden aan toegankelijkheidsservice + Binden aan toegankelijkheidsservice + Nadat u op OK hebt geklikt, wordt u naar een systeemdialoogvenster gestuurd. Selecteer daar Automatisering en sta Toegankelijkheids-API toestaan toe. + Vereist voor bepaalde acties. + Als u er niet in slaagt om een van de volgende machtigingen en een systeembericht zoals \"Beperkte toestemming\" te verlenen, moet u eerst naar Android-instellingen gaan en vervolgens naar toepassingen en Automatisering kiezen. Nu zouden er 3 stippen in de rechterbovenhoek moeten zijn. Klik op \"Beperkte instellingen toestaan\". Daarna moet de benodigde toestemming aanvaardbaar zijn. Dit zou alleen van toepassing moeten zijn op de APK-versie van de app, niet die van F-Droid of Play Store. diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 2b524dd..7903f3b 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -899,4 +899,11 @@ Ten wyzwalacz będzie prawidłowy, jeśli właśnie rozłączyłeś się z Wi-Fi określonym powyżej LUB gdy usługa jest nadal uruchomiona i jeśli nie masz połączenia z żadną siecią Wi-Fi. Jeśli chcesz, aby wyzwalacz uruchamiał się tylko wtedy, gdy jawnie rozłączasz się z określoną siecią Wi-Fi, dodaj kolejny wyzwalacz \"usługa nie uruchamia się\". nazwa klasy przez startForegroundService() + Metoda + Zrób zrzut ekranu + Powiąż z usługą ułatwień dostępu + Powiąż z usługą ułatwień dostępu + Po kliknięciu OK zostaniesz przekierowany do systemowego okna dialogowego. Wybierz tam Automatyzację i zezwól na Zezwalaj na interfejs API ułatwień dostępu. + Wymagane w przypadku niektórych działań. + Jeśli nie uda Ci się przyznać następującego uprawnienia i komunikatu systemowego, takiego jak \"Ograniczone uprawnienia\", musisz najpierw przejść do ustawień Androida, a następnie aplikacji, wybrać Automatyzacja. Teraz w prawym górnym rogu powinny znajdować się 3 kropki. Kliknij \"Zezwól na ustawienia z ograniczeniami\". Następnie powinno być możliwe udzielenie niezbędnego pozwolenia. Powinno to dotyczyć tylko wersji APK aplikacji, a nie tych z F-Droid lub Sklepu Play. diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 243604f..3b269bb 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -859,4 +859,11 @@ Этот триггер будет действителен, если вы только что отключились от Wi-Fi, указанного выше, ИЛИ во время запуска службы и если вы не подключены ни к одному Wi-Fi. Если вы хотите, чтобы триггер срабатывал только тогда, когда вы явно отключаетесь от определенного Wi-Fi, добавьте еще один триггер «сервис не запускается». Имя класса no startForegroundService() + Метод + Сделать снимок экрана + Привязка к службе специальных возможностей + Привязка к службе специальных возможностей + После нажатия кнопки «ОК» вы попадете в системное диалоговое окно. Выберите там «Автоматизация» и разрешите «Разрешить API специальных возможностей». + Required for certain actions. + Если вы не можете предоставить одно из следующих разрешений и системное сообщение типа «Ограниченное разрешение», вам нужно сначала перейти в настройки Android, затем в приложения, выбрать «Автоматизация». Теперь в правом верхнем углу должно быть 3 точки. Нажмите «Разрешить ограниченные настройки». После этого необходимо получить необходимое разрешение. Это должно относиться только к APK-версии приложения, а не к версии из F-Droid или Play Store. diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 5c1b9b9..147d5c4 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -800,4 +800,11 @@ 如果您刚刚断开了与上面指定的 wifi 的连接,或者在服务仍在启动并且您没有连接到任何 wifi,则此触发器将有效。 如果您希望触发器仅在您明确断开与某个 wifi 的连接时触发,请添加另一个触发器\"服务未启动\"。 类名 来自 startForegroundService() + 方法 + 截屏 + 绑定到辅助功能服务 + 绑定到辅助功能服务 + 单击\"确定\"后,您将被发送到系统对话框。请在此处选择\"自动化\",并允许\"允许辅助功能 API\"。 + 对于某些操作是必需的。 + 如果您未能授予以下权限和\"受限权限\"之类的系统消息,则需要先转到 Android 设置,然后转到应用程序,选择自动化。现在右上角应该有 3 个点。单击\"允许受限设置\"。之后,应该可以授予必要的权限。这应该仅适用于应用的 APK 版本,而不适用于 F-Droid 或 Play 商店中的版本。 \ 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 7651fe9..c94aadb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -896,5 +896,6 @@ Bind to accessibility service Bind to accessibility service After clicking OK you\'ll be sent to a system dialog. Please select Automation there and allow "Allow accessibility API". - Required for certains actions. + Required for certain actions. + If you fail to grant one the following permission and a system message like \"Restricted permission\" you need to go to Android settings first, then applications, choose Automation. Now there should be 3 dots in the upper right corner. Click \"Allow restricted settings\". After that the necessary permission should be grantable. This should only apply to the APK version of the app, not the ones from F-Droid or Play Store. \ No newline at end of file