Compare commits

..

3 Commits

Author SHA1 Message Date
jens 887e6de3e4 Distinction between settings 2026-05-14 20:22:58 +02:00
jens 5417b4e739 Small bugfixes 2026-04-12 12:47:59 +02:00
jens 7e72dfd19a Version 1.8.7 2026-03-06 22:22:34 +01:00
27 changed files with 155 additions and 44 deletions
+4 -4
View File
@@ -3,16 +3,16 @@ plugins {
} }
android { android {
compileSdkVersion 34 compileSdkVersion 36
defaultConfig { defaultConfig {
applicationId "com.jens.automation2" applicationId "com.jens.automation2"
minSdkVersion 16 minSdkVersion 19
compileSdkVersion 36 compileSdkVersion 36
buildToolsVersion '36.0.0' buildToolsVersion '36.0.0'
useLibrary 'org.apache.http.legacy' useLibrary 'org.apache.http.legacy'
versionCode 147 versionCode 148
versionName "1.8.6" versionName "1.8.7"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }
@@ -524,7 +524,7 @@ public class Action
triggerUrl(context); triggerUrl(context);
break; break;
case setBluetooth: case setBluetooth:
Actions.setBluetooth(context, getParameter1(), toggleActionIfPossible); boolean result = Actions.setBluetooth(context, getParameter1(), toggleActionIfPossible);
break; break;
case setUsbTethering: case setUsbTethering:
Actions.setUsbTethering(context, getParameter1(), toggleActionIfPossible); Actions.setUsbTethering(context, getParameter1(), toggleActionIfPossible);
@@ -260,9 +260,11 @@ public class Actions
ContentResolver cr = instance.getContentResolver(); ContentResolver cr = instance.getContentResolver();
//"String", "Long", "Int", "Float" }; // "String", "Long", "Int", "Float"
String[] parts = parameter2.split(Action.actionParameter2Split); String[] parts = parameter2.split(Action.actionParameter2Split, -1);
if(parts.length == 3)
{
if (parts[0].equalsIgnoreCase("String")) if (parts[0].equalsIgnoreCase("String"))
result = android.provider.Settings.Global.putString(cr, parts[1], parts[2]); result = android.provider.Settings.Global.putString(cr, parts[1], parts[2]);
else if (parts[0].equalsIgnoreCase("Long")) else if (parts[0].equalsIgnoreCase("Long"))
@@ -271,6 +273,45 @@ public class Actions
result = android.provider.Settings.Global.putInt(cr, parts[1], Integer.parseInt(parts[2])); result = android.provider.Settings.Global.putInt(cr, parts[1], Integer.parseInt(parts[2]));
else if (parts[0].equalsIgnoreCase("Float")) else if (parts[0].equalsIgnoreCase("Float"))
result = android.provider.Settings.Global.putFloat(cr, parts[1], Float.parseFloat(parts[2])); result = android.provider.Settings.Global.putFloat(cr, parts[1], Float.parseFloat(parts[2]));
}
else
{
if(parts[0].equals(ActivityManageActionSetSystemSetting.targets[0]))
{
if (parts[1].equalsIgnoreCase("String"))
result = android.provider.Settings.Global.putString(cr, parts[2], parts[3]);
else if (parts[1].equalsIgnoreCase("Long"))
result = android.provider.Settings.Global.putLong(cr, parts[2], Long.parseLong(parts[3]));
else if (parts[1].equalsIgnoreCase("Int"))
result = android.provider.Settings.Global.putInt(cr, parts[2], Integer.parseInt(parts[3]));
else if (parts[1].equalsIgnoreCase("Float"))
result = android.provider.Settings.Global.putFloat(cr, parts[2], Float.parseFloat(parts[3]));
}
else if(parts[0].equals(ActivityManageActionSetSystemSetting.targets[1]))
{
if (parts[1].equalsIgnoreCase("String"))
result = android.provider.Settings.System.putString(cr, parts[2], parts[3]);
else if (parts[1].equalsIgnoreCase("Long"))
result = android.provider.Settings.System.putLong(cr, parts[2], Long.parseLong(parts[3]));
else if (parts[1].equalsIgnoreCase("Int"))
result = android.provider.Settings.System.putInt(cr, parts[2], Integer.parseInt(parts[3]));
else if (parts[1].equalsIgnoreCase("Float"))
result = android.provider.Settings.System.putFloat(cr, parts[2], Float.parseFloat(parts[3]));
}
else if(parts[0].equals(ActivityManageActionSetSystemSetting.targets[2]))
{
if (parts[1].equalsIgnoreCase("String"))
result = android.provider.Settings.Secure.putString(cr, parts[2], parts[3]);
else if (parts[1].equalsIgnoreCase("Long"))
result = android.provider.Settings.Secure.putLong(cr, parts[2], Long.parseLong(parts[3]));
else if (parts[1].equalsIgnoreCase("Int"))
result = android.provider.Settings.Secure.putInt(cr, parts[2], Integer.parseInt(parts[3]));
else if (parts[1].equalsIgnoreCase("Float"))
result = android.provider.Settings.Secure.putFloat(cr, parts[2], Float.parseFloat(parts[3]));
}
else
result = false;
}
Miscellaneous.logEvent("i", "Variable", "Result of system setting change: " + String.valueOf(result), 4); Miscellaneous.logEvent("i", "Variable", "Result of system setting change: " + String.valueOf(result), 4);
@@ -825,7 +866,7 @@ public class Actions
public static Boolean setBluetooth(Context context, Boolean desiredState, boolean toggleActionIfPossible) public static Boolean setBluetooth(Context context, Boolean desiredState, boolean toggleActionIfPossible)
{ {
Miscellaneous.logEvent("i", "Bluetooth", "Changing bluetooth to " + String.valueOf(desiredState), 4); Miscellaneous.logEvent("i", "Bluetooth", "Changing bluetooth to " + String.valueOf(desiredState), 4);
// mPhone.setDataEnabled(enable);
try try
{ {
BluetoothAdapter myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); BluetoothAdapter myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
@@ -841,16 +882,16 @@ public class Actions
if (!myBluetoothAdapter.isEnabled() && desiredState) if (!myBluetoothAdapter.isEnabled() && desiredState)
{ {
Toast.makeText(context, context.getResources().getString(R.string.activating) + " Bluetooth.", Toast.LENGTH_LONG).show(); Toast.makeText(context, context.getResources().getString(R.string.activating) + " Bluetooth.", Toast.LENGTH_LONG).show();
myBluetoothAdapter.enable(); return myBluetoothAdapter.enable();
return true; //return true;
} }
// deactivate // deactivate
if (myBluetoothAdapter.isEnabled() && !desiredState) if (myBluetoothAdapter.isEnabled() && !desiredState)
{ {
Toast.makeText(context, context.getResources().getString(R.string.deactivating) + " Bluetooth.", Toast.LENGTH_LONG).show(); Toast.makeText(context, context.getResources().getString(R.string.deactivating) + " Bluetooth.", Toast.LENGTH_LONG).show();
myBluetoothAdapter.disable(); return myBluetoothAdapter.disable();
return true; //return true;
} }
} }
catch (NullPointerException e) catch (NullPointerException e)
@@ -68,7 +68,7 @@ public class ActivityMainTabLayout extends TabActivity
super.onResume(); super.onResume();
Miscellaneous.setDisplayLanguage(this); Miscellaneous.setDisplayLanguage(this);
// Miscellaneous.logEvent("i", "NFC", "ActivityMainTabLayout.onResume().", 5); // Miscellaneous.logEvent("i", "NFC", "ActivityMainTabLayout.onResume().", 5);
if(!(getIntent().getAction().isEmpty()) && getIntent().getAction().equals(NfcAdapter.ACTION_NDEF_DISCOVERED)) if(!(getIntent().getAction() == null || getIntent().getAction().isEmpty()) && getIntent().getAction().equals(NfcAdapter.ACTION_NDEF_DISCOVERED))
{ {
NfcReceiver.checkIntentForNFC(this, getIntent()); NfcReceiver.checkIntentForNFC(this, getIntent());
moveTaskToBack(true); moveTaskToBack(true);
@@ -18,12 +18,13 @@ import android.widget.Toast;
public class ActivityManageActionSetSystemSetting extends Activity public class ActivityManageActionSetSystemSetting extends Activity
{ {
Spinner spinnerSettingDataType; Spinner spinnerSettingTarget, spinnerSettingDataType;
EditText etSettingName, etSettingValue; EditText etSettingName, etSettingValue;
Button bSaveSetSystemSetting; Button bSaveSetSystemSetting;
TextView tvSetSystemSettingExamples, tvSetSystemSettingNoticeWriteSecureSettings; TextView tvSetSystemSettingExamples, tvSetSystemSettingNoticeWriteSecureSettings;
ArrayAdapter<String> settingDataTypeSpinnerAdapter; ArrayAdapter<String> settingTargetSpinnerAdapter, settingDataTypeSpinnerAdapter;
protected final static String[] targets = { "Global", "System", "Secure" };
protected final static String[] dataTypes = { "String", "Long", "Int", "Float" }; protected final static String[] dataTypes = { "String", "Long", "Int", "Float" };
@Override @Override
@@ -34,6 +35,7 @@ public class ActivityManageActionSetSystemSetting extends Activity
Miscellaneous.setUiTheme(this); Miscellaneous.setUiTheme(this);
this.setContentView(R.layout.activity_manage_action_set_system_setting); this.setContentView(R.layout.activity_manage_action_set_system_setting);
spinnerSettingTarget = (Spinner) findViewById(R.id.spinnerSettingTarget);
spinnerSettingDataType = (Spinner) findViewById(R.id.spinnerSettingDataType); spinnerSettingDataType = (Spinner) findViewById(R.id.spinnerSettingDataType);
etSettingName = (EditText)findViewById(R.id.etSettingName); etSettingName = (EditText)findViewById(R.id.etSettingName);
etSettingValue = (EditText)findViewById(R.id.etSettingValue); etSettingValue = (EditText)findViewById(R.id.etSettingValue);
@@ -41,6 +43,10 @@ public class ActivityManageActionSetSystemSetting extends Activity
tvSetSystemSettingExamples = (TextView)findViewById(R.id.tvSetSystemSettingExamples); tvSetSystemSettingExamples = (TextView)findViewById(R.id.tvSetSystemSettingExamples);
tvSetSystemSettingNoticeWriteSecureSettings = (TextView)findViewById(R.id.tvSetSystemSettingNoticeWriteSecureSettings); tvSetSystemSettingNoticeWriteSecureSettings = (TextView)findViewById(R.id.tvSetSystemSettingNoticeWriteSecureSettings);
settingTargetSpinnerAdapter = new ArrayAdapter<String>(this, R.layout.text_view_for_poi_listview_mediumtextsize, targets);
spinnerSettingTarget.setAdapter(settingTargetSpinnerAdapter);
settingTargetSpinnerAdapter.notifyDataSetChanged();
settingDataTypeSpinnerAdapter = new ArrayAdapter<String>(this, R.layout.text_view_for_poi_listview_mediumtextsize, dataTypes); settingDataTypeSpinnerAdapter = new ArrayAdapter<String>(this, R.layout.text_view_for_poi_listview_mediumtextsize, dataTypes);
spinnerSettingDataType.setAdapter(settingDataTypeSpinnerAdapter); spinnerSettingDataType.setAdapter(settingDataTypeSpinnerAdapter);
settingDataTypeSpinnerAdapter.notifyDataSetChanged(); settingDataTypeSpinnerAdapter.notifyDataSetChanged();
@@ -52,6 +58,9 @@ public class ActivityManageActionSetSystemSetting extends Activity
else else
tvSetSystemSettingNoticeWriteSecureSettings.setVisibility(View.VISIBLE); tvSetSystemSettingNoticeWriteSecureSettings.setVisibility(View.VISIBLE);
// Make links clickable
tvSetSystemSettingNoticeWriteSecureSettings.setMovementMethod(LinkMovementMethod.getInstance());
spinnerSettingDataType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() spinnerSettingDataType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{ {
@Override @Override
@@ -115,7 +124,7 @@ public class ActivityManageActionSetSystemSetting extends Activity
Intent returnIntent = new Intent(); Intent returnIntent = new Intent();
String param2Data = dataTypes[spinnerSettingDataType.getSelectedItemPosition()] + Action.actionParameter2Split + etSettingName.getText().toString() + Action.actionParameter2Split + etSettingValue.getText().toString(); String param2Data = targets[spinnerSettingTarget.getSelectedItemPosition()] + Action.actionParameter2Split + dataTypes[spinnerSettingDataType.getSelectedItemPosition()] + Action.actionParameter2Split + etSettingName.getText().toString() + Action.actionParameter2Split + etSettingValue.getText().toString();
returnIntent.putExtra(ActivityManageRule.intentNameActionParameter1, false); returnIntent.putExtra(ActivityManageRule.intentNameActionParameter1, false);
returnIntent.putExtra(ActivityManageRule.intentNameActionParameter2, param2Data); returnIntent.putExtra(ActivityManageRule.intentNameActionParameter2, param2Data);
@@ -128,8 +137,23 @@ public class ActivityManageActionSetSystemSetting extends Activity
if(getIntent().hasExtra(ActivityManageRule.intentNameActionParameter2)) if(getIntent().hasExtra(ActivityManageRule.intentNameActionParameter2))
{ {
// dataType, setting name, setting value // dataType, setting name, setting value
String[] components = getIntent().getStringExtra(ActivityManageRule.intentNameActionParameter2).split(Action.actionParameter2Split); String[] components = getIntent().getStringExtra(ActivityManageRule.intentNameActionParameter2).split(Action.actionParameter2Split, -1);
if(components.length == 4)
{
int positionTarget = Miscellaneous.arraySearchIndexOf(targets, components[0], false, true);
int positionDataType = Miscellaneous.arraySearchIndexOf(dataTypes, components[1], false, true);
if(positionDataType >= 0)
{
spinnerSettingTarget.setSelection(positionTarget);
spinnerSettingDataType.setSelection(positionDataType);
etSettingName.setText(components[2]);
etSettingValue.setText(components[3]);
}
}
else
{
int position = Miscellaneous.arraySearchIndexOf(dataTypes, components[0], false, true); int position = Miscellaneous.arraySearchIndexOf(dataTypes, components[0], false, true);
if (position >= 0) if (position >= 0)
@@ -140,6 +164,7 @@ public class ActivityManageActionSetSystemSetting extends Activity
} }
} }
} }
}
private void updateListView() private void updateListView()
{ {
@@ -677,6 +677,8 @@ public class ActivityPermissions extends Activity
addToArrayListUnique(Manifest.permission.BLUETOOTH, requiredPermissions); addToArrayListUnique(Manifest.permission.BLUETOOTH, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions); addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions); addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
if(Build.VERSION.SDK_INT >= 31)
addToArrayListUnique(Manifest.permission.BLUETOOTH_CONNECT, requiredPermissions);
break; break;
case setDataConnection: case setDataConnection:
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions); addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
@@ -796,7 +798,18 @@ public class ActivityPermissions extends Activity
break; break;
case setLocationService: case setLocationService:
case setSystemSetting: case setSystemSetting:
String[] parts = action.getParameter2().split(Action.actionParameter2Split, -1);
if(parts.length < 4)
addToArrayListUnique(Manifest.permission.WRITE_SECURE_SETTINGS, requiredPermissions); addToArrayListUnique(Manifest.permission.WRITE_SECURE_SETTINGS, requiredPermissions);
else
{
if(parts[0].equals(ActivityManageActionSetSystemSetting.targets[0]))
addToArrayListUnique(Manifest.permission.WRITE_SECURE_SETTINGS, requiredPermissions);
else if(parts[0].equals(ActivityManageActionSetSystemSetting.targets[1]))
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
else if(parts[0].equals(ActivityManageActionSetSystemSetting.targets[2]))
addToArrayListUnique(Manifest.permission.WRITE_SECURE_SETTINGS, requiredPermissions);
}
break; break;
case setScreenBrightness: case setScreenBrightness:
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions); addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
@@ -1414,7 +1414,8 @@ public class Miscellaneous extends Service
builder.setOnlyAlertOnce(true); builder.setOnlyAlertOnce(true);
if(Settings.showIconWhenServiceIsRunning && notificationChannelId.equals(AutomationService.NOTIFICATION_CHANNEL_ID_SERVICE)) //if(Settings.showIconWhenServiceIsRunning && notificationChannelId.equals(AutomationService.NOTIFICATION_CHANNEL_ID_SERVICE))
if(notificationChannelId.equals(AutomationService.NOTIFICATION_CHANNEL_ID_SERVICE))
{ {
if(BuildConfig.FLAVOR.equals(AutomationService.flavor_name_googleplay)) if(BuildConfig.FLAVOR.equals(AutomationService.flavor_name_googleplay))
builder.setSmallIcon(R.drawable.crane); builder.setSmallIcon(R.drawable.crane);
@@ -72,6 +72,22 @@
</TableRow> </TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/target" />
<Spinner
android:id="@+id/spinnerSettingTarget"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</TableRow>
<TableRow <TableRow
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
+1 -1
View File
@@ -812,7 +812,7 @@
<string name="noticeRestrictedPermissions">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.</string> <string name="noticeRestrictedPermissions">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.</string>
<string name="setLocationService">Ortungsdienst festlegen</string> <string name="setLocationService">Ortungsdienst festlegen</string>
<string name="setLocationServiceCapital">Ortungsdienst einstellen</string> <string name="setLocationServiceCapital">Ortungsdienst einstellen</string>
<string name="writeSecureSettingsNotice">Leider kann die Erlaubnis WRITE_SECURE_SETTINGS nicht direkt auf Ihrem Android-Gerät erteilt werden. Stattdessen müssen Sie Ihr Gerät an einen Computer anschließen und die Berechtigung über ADB erteilen. Klicken Sie hier, um zu erfahren, wie Sie es gewähren können: https://server47.de/automation/adb_hack.php</string> <string name="writeSecureSettingsNotice">Wenn Sie Global oder Secure als Ziel wählen, müssen Sie die Berechtigung WRITE_SECURE_SETTINGS erteilen. Leider kann diese Variante nicht direkt auf Ihrem Android-Gerät bereitgestellt werden. Stattdessen müssen Sie Ihr Gerät an einen Computer anschließen und die Berechtigung über ADB erteilen. Klicken Sie hier, um zu erfahren, wie Sie es gewähren können: <a href="https://server47.de/automation/adb_hack.php">https://server47.de/automation/adb_hack.php</a></string>
<string name="actionSetLocationService">Ortungsdienst</string> <string name="actionSetLocationService">Ortungsdienst</string>
<string name="triggerUrlVariableHint">Das Ergebnis dieser Anfrage wird in der Variablen last_trigger_url_result gespeichert, wenn Sie es von einer anderen Regel aus überprüfen möchten. Im Falle von HTTP-Fehlern wie 404 ist der Wert \"HTTP_ERROR\".</string> <string name="triggerUrlVariableHint">Das Ergebnis dieser Anfrage wird in der Variablen last_trigger_url_result gespeichert, wenn Sie es von einer anderen Regel aus überprüfen möchten. Im Falle von HTTP-Fehlern wie 404 ist der Wert \"HTTP_ERROR\".</string>
<string name="calendarEvent">Kalendertermin</string> <string name="calendarEvent">Kalendertermin</string>
+1 -1
View File
@@ -811,7 +811,7 @@
<string name="noticeRestrictedPermissions">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.</string> <string name="noticeRestrictedPermissions">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.</string>
<string name="setLocationService">Encender/desactivar el servicio de ubicación</string> <string name="setLocationService">Encender/desactivar el servicio de ubicación</string>
<string name="setLocationServiceCapital">Establecer el servicio de ubicación</string> <string name="setLocationServiceCapital">Establecer el servicio de ubicación</string>
<string name="writeSecureSettingsNotice">Desafortunadamente, el permiso WRITE_SECURE_SETTINGS no se puede otorgar directamente en su dispositivo Android. En su lugar, debe conectar su dispositivo a una computadora y otorgar el permiso a través de ADB. Haga clic aquí para saber cómo otorgarlo: https://server47.de/automation/adb_hack.php</string> <string name="writeSecureSettingsNotice">Si eliges Global o Seguro como objetivo, tendrás que conceder el permiso WRITE_SECURE_SETTINGS. Desafortunadamente, este no se puede entregar directamente en tu dispositivo Android. En su lugar, debe conectar su dispositivo a una computadora y otorgar el permiso a través de ADB. Haga clic aquí para saber cómo otorgarlo: <a href="https://server47.de/automation/adb_hack.php">https://server47.de/automation/adb_hack.php</a></string>
<string name="actionSetLocationService">Servicio de localización</string> <string name="actionSetLocationService">Servicio de localización</string>
<string name="triggerUrlVariableHint">El resultado de esta solicitud se almacenará en la variable last_trigger_url_result si desea verificarlo desde otra regla. En caso de errores HTTP como 404, el valor será \"HTTP_ERROR\".</string> <string name="triggerUrlVariableHint">El resultado de esta solicitud se almacenará en la variable last_trigger_url_result si desea verificarlo desde otra regla. En caso de errores HTTP como 404, el valor será \"HTTP_ERROR\".</string>
<string name="calendarEvent">Evento de calendario</string> <string name="calendarEvent">Evento de calendario</string>
+1 -1
View File
@@ -811,7 +811,7 @@
<string name="noticeRestrictedPermissions">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.</string> <string name="noticeRestrictedPermissions">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.</string>
<string name="setLocationService">Définir le service de localisation</string> <string name="setLocationService">Définir le service de localisation</string>
<string name="setLocationServiceCapital">Définir le service de localisation</string> <string name="setLocationServiceCapital">Définir le service de localisation</string>
<string name="writeSecureSettingsNotice">Malheureusement, l\'autorisation WRITE_SECURE_SETTINGS ne peut pas être donnée directement sur votre appareil Android. Au lieu de cela, vous devez connecter votre appareil à un ordinateur et accorder l\'autorisation via ADB. Cliquez ici pour savoir comment l\'accorder : https://server47.de/automation/adb_hack.php</string> <string name="writeSecureSettingsNotice">Si vous choisissez Global ou Sécurisé comme cible, vous devrez accorder la permission WRITE_SECURE_SETTINGS. Malheureusement, celle-ci ne peut pas être donnée directement sur votre appareil Android. Au lieu de cela, vous devez connecter votre appareil à un ordinateur et accorder l\'autorisation via ADB. Cliquez ici pour savoir comment l\'accorder: <a href="https://server47.de/automation/adb_hack.php">https://server47.de/automation/adb_hack.php</a></string>
<string name="actionSetLocationService">Service de localisation</string> <string name="actionSetLocationService">Service de localisation</string>
<string name="triggerUrlVariableHint">Le résultat de cette requête sera stocké dans la variable last_triggerurl_result si vous souhaitez le vérifier à partir d\'une autre règle. En cas d\'erreurs HTTP comme 404, la valeur sera « HTTP_ERROR ».</string> <string name="triggerUrlVariableHint">Le résultat de cette requête sera stocké dans la variable last_triggerurl_result si vous souhaitez le vérifier à partir d\'une autre règle. En cas d\'erreurs HTTP comme 404, la valeur sera « HTTP_ERROR ».</string>
<string name="calendarEvent">Événement de calendrier</string> <string name="calendarEvent">Événement de calendrier</string>
+1 -1
View File
@@ -812,7 +812,7 @@
<string name="noticeRestrictedPermissions">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.</string> <string name="noticeRestrictedPermissions">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.</string>
<string name="setLocationService">Impostare il servizio di localizzazione</string> <string name="setLocationService">Impostare il servizio di localizzazione</string>
<string name="setLocationServiceCapital">Impostare il servizio di localizzazione</string> <string name="setLocationServiceCapital">Impostare il servizio di localizzazione</string>
<string name="writeSecureSettingsNotice">Purtroppo l\'autorizzazione WRITE_SECURE_SETTINGS non può essere data direttamente sul tuo dispositivo Android. Invece, devi collegare il tuo dispositivo a un computer e concedere l\'autorizzazione tramite ADB. Clicca qui per scoprire come concederlo: https://server47.de/automation/adb_hack.php</string> <string name="writeSecureSettingsNotice">Se scegli Global o Secure come bersaglio, dovrai concedere il permesso WRITE_SECURE_SETTINGS. Purtroppo questo non può essere fornito direttamente sul tuo dispositivo Android. Invece, devi collegare il tuo dispositivo a un computer e concedere l\'autorizzazione tramite ADB. Clicca qui per scoprire come concederlo: <a href="https://server47.de/automation/adb_hack.php">https://server47.de/automation/adb_hack.php</a></string>
<string name="actionSetLocationService">Servizio di localizzazione</string> <string name="actionSetLocationService">Servizio di localizzazione</string>
<string name="triggerUrlVariableHint">Il risultato di questa richiesta verrà memorizzato nella variabile last_trigger_url_result se si desidera controllarlo da un\'altra regola. In caso di errori HTTP come 404 il valore sarà \"HTTP_ERROR\".</string> <string name="triggerUrlVariableHint">Il risultato di questa richiesta verrà memorizzato nella variabile last_trigger_url_result se si desidera controllarlo da un\'altra regola. In caso di errori HTTP come 404 il valore sarà \"HTTP_ERROR\".</string>
<string name="calendarEvent">Evento del calendario</string> <string name="calendarEvent">Evento del calendario</string>
+1 -1
View File
@@ -810,7 +810,7 @@
<string name="noticeRestrictedPermissions">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.</string> <string name="noticeRestrictedPermissions">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.</string>
<string name="setLocationService">Locatieservice instellen</string> <string name="setLocationService">Locatieservice instellen</string>
<string name="setLocationServiceCapital">Locatieservice instellen</string> <string name="setLocationServiceCapital">Locatieservice instellen</string>
<string name="writeSecureSettingsNotice">Helaas kan de toestemming WRITE_SECURE_SETTINGS niet rechtstreeks op uw Android-apparaat worden gegeven. In plaats daarvan moet u uw apparaat op een computer aansluiten en de toestemming verlenen via ADB. Klik hier om te weten te komen hoe u het kunt toekennen: https://server47.de/automation/adb_hack.php</string> <string name="writeSecureSettingsNotice">Als je Global of Secure als doelwit kiest, moet je toestemming geven WRITE_SECURE_SETTINGS. Helaas kan deze niet direct op je Android-apparaat worden gegeven. In plaats daarvan moet u uw apparaat op een computer aansluiten en de toestemming verlenen via ADB. Klik hier om te weten te komen hoe u het kunt toekennen: <a href="https://server47.de/automation/adb_hack.php">https://server47.de/automation/adb_hack.php</a></string>
<string name="actionSetLocationService">Locatie service</string> <string name="actionSetLocationService">Locatie service</string>
<string name="triggerUrlVariableHint">Het resultaat van dit verzoek wordt opgeslagen in de variabele last_trigger_url_result als u het vanuit een andere regel wilt controleren. In het geval van HTTP-fouten zoals 404 is de waarde \"HTTP_ERROR\".</string> <string name="triggerUrlVariableHint">Het resultaat van dit verzoek wordt opgeslagen in de variabele last_trigger_url_result als u het vanuit een andere regel wilt controleren. In het geval van HTTP-fouten zoals 404 is de waarde \"HTTP_ERROR\".</string>
<string name="calendarEvent">Agenda-afspraak</string> <string name="calendarEvent">Agenda-afspraak</string>
+1 -1
View File
@@ -909,7 +909,7 @@
<string name="noticeRestrictedPermissions">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.</string> <string name="noticeRestrictedPermissions">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.</string>
<string name="setLocationService">Ustawianie usługi lokalizacyjnej</string> <string name="setLocationService">Ustawianie usługi lokalizacyjnej</string>
<string name="setLocationServiceCapital">Ustawianie usługi lokalizacyjnej</string> <string name="setLocationServiceCapital">Ustawianie usługi lokalizacyjnej</string>
<string name="writeSecureSettingsNotice">Niestety WRITE_SECURE_SETTINGS uprawnień nie można nadać bezpośrednio na urządzeniu z Androidem. Zamiast tego musisz podłączyć urządzenie do komputera i przyznać uprawnienia przez ADB. Kliknij tutaj, aby dowiedzieć się, jak go przyznać: https://server47.de/automation/adb_hack.php</string> <string name="writeSecureSettingsNotice">Jeśli wybierzesz Globalne lub Bezpieczne jako cel, musisz przyzwolić WRITE_SECURE_SETTINGS. Niestety tego nie można podać bezpośrednio na urządzeniu z Androidem. Zamiast tego musisz podłączyć urządzenie do komputera i przyznać uprawnienia przez ADB. Kliknij tutaj, aby dowiedzieć się, jak go przyznać: <a href="https://server47.de/automation/adb_hack.php">https://server47.de/automation/adb_hack.php</a></string>
<string name="actionSetLocationService">Usługa lokalizacyjna</string> <string name="actionSetLocationService">Usługa lokalizacyjna</string>
<string name="triggerUrlVariableHint">Wynik tego żądania zostanie zapisany w zmiennej last_trigger_url_result, jeśli chcesz go sprawdzić z innej reguły. W przypadku błędów HTTP, takich jak 404, wartość będzie wynosić \"HTTP_ERROR\".</string> <string name="triggerUrlVariableHint">Wynik tego żądania zostanie zapisany w zmiennej last_trigger_url_result, jeśli chcesz go sprawdzić z innej reguły. W przypadku błędów HTTP, takich jak 404, wartość będzie wynosić \"HTTP_ERROR\".</string>
<string name="calendarEvent">Wydarzenie w kalendarzu</string> <string name="calendarEvent">Wydarzenie w kalendarzu</string>
+1 -1
View File
@@ -869,7 +869,7 @@
<string name="noticeRestrictedPermissions">Если вы не можете предоставить одно из следующих разрешений и системное сообщение типа «Ограниченное разрешение», вам нужно сначала перейти в настройки Android, затем в приложения, выбрать «Автоматизация». Теперь в правом верхнем углу должно быть 3 точки. Нажмите «Разрешить ограниченные настройки». После этого необходимо получить необходимое разрешение. Это должно относиться только к APK-версии приложения, а не к версии из F-Droid или Play Store.</string> <string name="noticeRestrictedPermissions">Если вы не можете предоставить одно из следующих разрешений и системное сообщение типа «Ограниченное разрешение», вам нужно сначала перейти в настройки Android, затем в приложения, выбрать «Автоматизация». Теперь в правом верхнем углу должно быть 3 точки. Нажмите «Разрешить ограниченные настройки». После этого необходимо получить необходимое разрешение. Это должно относиться только к APK-версии приложения, а не к версии из F-Droid или Play Store.</string>
<string name="setLocationService">Настройка службы определения местоположения</string> <string name="setLocationService">Настройка службы определения местоположения</string>
<string name="setLocationServiceCapital">Настройка службы определения местоположения</string> <string name="setLocationServiceCapital">Настройка службы определения местоположения</string>
<string name="writeSecureSettingsNotice">К сожалению, разрешение WRITE_SECURE_SETTINGS не может быть дано непосредственно на вашем Android-устройстве. Вместо этого вам нужно подключить устройство к компьютеру и предоставить разрешение через ADB. Нажмите здесь, чтобы узнать, как его получить: https://server47.de/automation/adb_hack.php</string> <string name="writeSecureSettingsNotice">Если вы выберете Global или Secure в качестве цели, вам потребуется предоставить разрешение WRITE_SECURE_SETTINGS. К сожалению, этот вариант нельзя налично использовать на вашем Android-устройстве. Вместо этого вам нужно подключить устройство к компьютеру и предоставить разрешение через ADB. Нажмите здесь, чтобы узнать, как его получить: <a href="https://server47.de/automation/adb_hack.php">https://server47.de/automation/adb_hack.php</a></string>
<string name="actionSetLocationService">Служба определения местоположения</string> <string name="actionSetLocationService">Служба определения местоположения</string>
<string name="triggerUrlVariableHint">Результат этого запроса будет сохранен в переменной last_trigger_url_result если вы захотите проверить его из другого правила. В случае ошибок HTTP, таких как 404, значение будет \"HTTP_ERROR\".</string> <string name="triggerUrlVariableHint">Результат этого запроса будет сохранен в переменной last_trigger_url_result если вы захотите проверить его из другого правила. В случае ошибок HTTP, таких как 404, значение будет \"HTTP_ERROR\".</string>
<string name="calendarEvent">Событие календаря</string> <string name="calendarEvent">Событие календаря</string>
+1 -1
View File
@@ -810,7 +810,7 @@
<string name="noticeRestrictedPermissions">如果您未能授予以下权限和\"受限权限\"之类的系统消息,则需要先转到 Android 设置,然后转到应用程序,选择自动化。现在右上角应该有 3 个点。单击\"允许受限设置\"。之后,应该可以授予必要的权限。这应该仅适用于应用的 APK 版本,而不适用于 F-Droid 或 Play 商店中的版本。</string> <string name="noticeRestrictedPermissions">如果您未能授予以下权限和\"受限权限\"之类的系统消息,则需要先转到 Android 设置,然后转到应用程序,选择自动化。现在右上角应该有 3 个点。单击\"允许受限设置\"。之后,应该可以授予必要的权限。这应该仅适用于应用的 APK 版本,而不适用于 F-Droid 或 Play 商店中的版本。</string>
<string name="setLocationService">设置位置服务</string> <string name="setLocationService">设置位置服务</string>
<string name="setLocationServiceCapital">设置位置服务</string> <string name="setLocationServiceCapital">设置位置服务</string>
<string name="writeSecureSettingsNotice">不幸的是,WRITE_SECURE_SETTINGS无法直接在您的 Android 设备上授予权限。相反,您需要将设备连接到计算机并通过 ADB 授予权限。单击此处了解如何授予它: https://server47.de/automation/adb_hack.php</string> <string name="writeSecureSettingsNotice">如果你选择全球或安全作为目标,你需要授予WRITE_SECURE_SETTINGS权限。遗憾的是,这个服务不能直接在你的安卓设备上提供。 相反,您需要将设备连接到计算机并通过 ADB 授予权限。单击此处了解如何授予它: <a href="https://server47.de/automation/adb_hack.php">https://server47.de/automation/adb_hack.php</a></string>
<string name="actionSetLocationService">定位服务</string> <string name="actionSetLocationService">定位服务</string>
<string name="triggerUrlVariableHint">此请求的结果将存储在变量 last_triggerurl_result 中,如果您希望从其他规则中检查它。如果出现像 404 这样的 HTTP 错误,则该值将为\"HTTP_ERROR\"。</string> <string name="triggerUrlVariableHint">此请求的结果将存储在变量 last_triggerurl_result 中,如果您希望从其他规则中检查它。如果出现像 404 这样的 HTTP 错误,则该值将为\"HTTP_ERROR\"。</string>
<string name="calendarEvent">日历事件</string> <string name="calendarEvent">日历事件</string>
+2 -1
View File
@@ -903,7 +903,7 @@
<string name="noticeRestrictedPermissions">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 grant-able. This should only apply to the APK version of the app, not the ones from F-Droid or Play Store.</string> <string name="noticeRestrictedPermissions">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 grant-able. This should only apply to the APK version of the app, not the ones from F-Droid or Play Store.</string>
<string name="setLocationService">set location service</string> <string name="setLocationService">set location service</string>
<string name="setLocationServiceCapital">Set location service</string> <string name="setLocationServiceCapital">Set location service</string>
<string name="writeSecureSettingsNotice">Unfortunately the permission WRITE_SECURE_SETTINGS cannot be given directly on your Android device. Instead you need to connect your device to a computer and grant the permission via ADB. Click here to find out how to grant it: https://server47.de/automation/adb_hack.php</string> <string name="writeSecureSettingsNotice">If you choose Global or Secure as target you will need to grant the permission WRITE_SECURE_SETTINGS. Unfortunately this one cannot be given directly on your Android device. Instead, you need to connect your device to a computer and grant the permission via ADB. Click here to find out how to grant it: <a href="https://server47.de/automation/adb_hack.php">https://server47.de/automation/adb_hack.php</a></string>
<string name="actionSetLocationService">Location service</string> <string name="actionSetLocationService">Location service</string>
<string name="LOCATION_MODE_SENSOR_ONLY" translatable="false">SENSOR_ONLY</string> <string name="LOCATION_MODE_SENSOR_ONLY" translatable="false">SENSOR_ONLY</string>
<string name="LOCATION_MODE_BATTERY_SAVING" translatable="false">BATTERY_SAVING</string> <string name="LOCATION_MODE_BATTERY_SAVING" translatable="false">BATTERY_SAVING</string>
@@ -978,4 +978,5 @@
<string name="setSystemSettingCapital">Set system setting</string> <string name="setSystemSettingCapital">Set system setting</string>
<string name="examplesWriteSecureSettings">I do not keep a list of possible settings. Please find those settings on your own. See <a href="https://developer.android.com/reference/android/provider/Settings.Secure">here</a> for some (incomplete) examples.</string> <string name="examplesWriteSecureSettings">I do not keep a list of possible settings. Please find those settings on your own. See <a href="https://developer.android.com/reference/android/provider/Settings.Secure">here</a> for some (incomplete) examples.</string>
<string name="httpParametersExplanation">If any parameter name starts with %1$s while method is POST, it will not be transmitted like the other parameters (with key=value), but transferred as main data. If the parameter ends with %2$s, no encoding will be performed.</string> <string name="httpParametersExplanation">If any parameter name starts with %1$s while method is POST, it will not be transmitted like the other parameters (with key=value), but transferred as main data. If the parameter ends with %2$s, no encoding will be performed.</string>
<string name="target">Target</string>
</resources> </resources>
@@ -0,0 +1 @@
* Geändert: MinSdk auf 19 erhöht, benötigt mindestens Android 4.4
@@ -0,0 +1 @@
* Changed: Raised minSdk to 19, requiring at minimum Android 4.4
@@ -0,0 +1,5 @@
* Added option to choose between Global, System and Secure for set settings
* Fixed: Crash when opening the application through the running service's notification
* Fixed: Crash when starting service and show service icon was deactivated in app settings
* Fixed: "Bluetooth connect" permission was not requested for turning Bluetooth on or off.
* Fixed: Another app started/stopped couldn't be added when UI language was Dutch.
@@ -0,0 +1 @@
* Cambiado: Subido minSdk a 19, requiriendo al mínimo Android 4.4
@@ -0,0 +1 @@
* Modifié : Portée du minSdk à 19, nécessitant au minimum Android 4.4
@@ -0,0 +1 @@
* Modificato: Aumentato il minSdk a 19, richiedendo almeno Android 4.4
@@ -0,0 +1 @@
* Gewijzigd: minSdk verhoogd naar 19, minimaal Android 4.4 vereist
@@ -0,0 +1 @@
* Zmieniono: Podniesiono minSdk do 19, wymagając co najmniej Androida 4.4
@@ -0,0 +1 @@
* Изменено: minSdk повышен до 19, требуется минимум Android 4.4
@@ -0,0 +1 @@
* 更改:将 minSDK 提升至 19,至少要求 Android 4.4