Many fixes

This commit is contained in:
2025-07-08 18:11:56 +02:00
parent e8524f719f
commit ec68d375c7
8 changed files with 112 additions and 84 deletions

View File

@ -32,6 +32,7 @@ import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.util.Log; import android.util.Log;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.WindowManager;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
@ -2054,6 +2055,9 @@ public class Actions
android.provider.Settings.System.putInt(context.getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); android.provider.Settings.System.putInt(context.getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
int actualBrightnessValue = (int) ((float) brightnessValue / 100.0 * 255.0); int actualBrightnessValue = (int) ((float) brightnessValue / 100.0 * 255.0);
if(actualBrightnessValue == 0)
actualBrightnessValue = 1; // seems to be the minimum, 0 isn't working
android.provider.Settings.System.putInt(context.getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, actualBrightnessValue); android.provider.Settings.System.putInt(context.getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, actualBrightnessValue);
} }

View File

@ -1,5 +1,6 @@
package com.jens.automation2; package com.jens.automation2;
import android.Manifest;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.ProgressDialog; import android.app.ProgressDialog;
@ -7,6 +8,7 @@ import android.content.ActivityNotFoundException;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Criteria; import android.location.Criteria;
import android.location.Location; import android.location.Location;
import android.location.LocationListener; import android.location.LocationListener;
@ -23,6 +25,9 @@ import android.widget.EditText;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.core.content.PermissionChecker;
import com.jens.automation2.receivers.ConnectivityReceiver; import com.jens.automation2.receivers.ConnectivityReceiver;
import java.util.Calendar; import java.util.Calendar;
@ -40,6 +45,7 @@ public class ActivityManagePoi extends Activity
EditText guiPoiName, guiPoiLatitude, guiPoiLongitude, guiPoiRadius; EditText guiPoiName, guiPoiLatitude, guiPoiLongitude, guiPoiRadius;
Calendar locationSearchStart = null; Calendar locationSearchStart = null;
Timer timer = null; Timer timer = null;
int requestCodeGetLocationPermission = 1293;
final static int defaultRadius = 250; final static int defaultRadius = 250;
final static int searchTimeout = 120; final static int searchTimeout = 120;
@ -77,7 +83,15 @@ public class ActivityManagePoi extends Activity
public void onClick(View v) public void onClick(View v)
{ {
hideKeyboard(); hideKeyboard();
getNotificationDialog(getResources().getString(R.string.positioningWindowNotice)).show(); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
if (ActivityPermissions.havePermission(Manifest.permission.ACCESS_FINE_LOCATION, ActivityManagePoi.this))
getNotificationDialog(getResources().getString(R.string.positioningWindowNotice)).show();
else
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, requestCodeGetLocationPermission);
}
else
getNotificationDialog(getResources().getString(R.string.positioningWindowNotice)).show();
} }
}); });
@ -112,6 +126,19 @@ public class ActivityManagePoi extends Activity
// new Poi to be created // new Poi to be created
} }
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
{
if(requestCode == requestCodeGetLocationPermission)
{
if(permissions[0].equals(Manifest.permission.ACCESS_FINE_LOCATION) && grantResults[0] == PackageManager.PERMISSION_GRANTED)
getNotificationDialog(getResources().getString(R.string.positioningWindowNotice)).show();
else
Toast.makeText(ActivityManagePoi.this, getResources().getString(R.string.locationPermissionRequired), Toast.LENGTH_LONG).show();
}
// super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
private void createPoi() private void createPoi()
{ {
myLocationManager.removeUpdates(myLocationListenerGps); myLocationManager.removeUpdates(myLocationListenerGps);
@ -314,20 +341,20 @@ public class ActivityManagePoi extends Activity
public void onClick(DialogInterface dialog, int which) public void onClick(DialogInterface dialog, int which)
{ {
progressDialog = ProgressDialog.show(ActivityManagePoi.this, "", getResources().getString(R.string.gettingPosition), true, true); progressDialog = ProgressDialog.show(ActivityManagePoi.this, "", getResources().getString(R.string.gettingPosition), true, true);
if(Build.VERSION.SDK_INT >= 31) // if(Build.VERSION.SDK_INT >= 31)
{ // {
AlertDialog dia = Miscellaneous.messageBox(getResources().getString(R.string.info), getResources().getString(R.string.locationNotWorkingOn12), ActivityManagePoi.this); // AlertDialog dia = Miscellaneous.messageBox(getResources().getString(R.string.info), getResources().getString(R.string.locationNotWorkingOn12), ActivityManagePoi.this);
dia.setOnDismissListener(new DialogInterface.OnDismissListener() // dia.setOnDismissListener(new DialogInterface.OnDismissListener()
{ // {
@Override // @Override
public void onDismiss(DialogInterface dialogInterface) // public void onDismiss(DialogInterface dialogInterface)
{ // {
getLocation(); // getLocation();
} // }
}); // });
dia.show(); // dia.show();
} // }
else // else
getLocation(); getLocation();
} }
}; };

View File

@ -2,6 +2,7 @@ package com.jens.automation2;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
@ -38,6 +39,9 @@ public class ActivityManageTriggerTimeFrame extends Activity
Miscellaneous.setDisplayLanguage(this); Miscellaneous.setDisplayLanguage(this);
setContentView(R.layout.activity_manage_trigger_timeframe); setContentView(R.layout.activity_manage_trigger_timeframe);
if(Build.VERSION.SDK_INT == 34)
Miscellaneous.messageBox(getResources().getString(R.string.info), getResources().getString(R.string.Android14TimePickerHint), ActivityManageTriggerTimeFrame.this).show();
startPicker = (TimePicker)findViewById(R.id.tpTimeFrameStart); startPicker = (TimePicker)findViewById(R.id.tpTimeFrameStart);
stopPicker = (TimePicker)findViewById(R.id.tpTimeFrameStop); stopPicker = (TimePicker)findViewById(R.id.tpTimeFrameStop);
startPicker.setIs24HourView(true); startPicker.setIs24HourView(true);

View File

@ -565,7 +565,10 @@ public class ActivityPermissions extends Activity
addToArrayListUnique(Manifest.permission.INTERNET, requiredPermissions); addToArrayListUnique(Manifest.permission.INTERNET, requiredPermissions);
break; break;
case timeFrame: case timeFrame:
if(Build.VERSION.SDK_INT >= 31 && Miscellaneous.getTargetSDK(Miscellaneous.getAnyContext()) >= 31) if(Build.VERSION.SDK_INT >= 31 && Miscellaneous.getTargetSDK(Miscellaneous.getAnyContext()) >= 31
// ||
// Build.VERSION.SDK_INT >= 33
)
addToArrayListUnique(Manifest.permission.SCHEDULE_EXACT_ALARM, requiredPermissions); addToArrayListUnique(Manifest.permission.SCHEDULE_EXACT_ALARM, requiredPermissions);
break; break;
case usb_host_connection: case usb_host_connection:
@ -697,7 +700,7 @@ public class ActivityPermissions extends Activity
// addToArrayListUnique("net.kollnig.missioncontrol.permission.ADMIN", requiredPermissions); // addToArrayListUnique("net.kollnig.missioncontrol.permission.ADMIN", requiredPermissions);
if(Build.VERSION.SDK_INT >= 29) if(Build.VERSION.SDK_INT >= 29)
{ {
String parts[]; String[] parts;
if(action.getParameter2().contains(Action.actionParameter2Split)) if(action.getParameter2().contains(Action.actionParameter2Split))
parts = action.getParameter2().split(Action.actionParameter2Split); parts = action.getParameter2().split(Action.actionParameter2Split);
else else
@ -705,7 +708,15 @@ public class ActivityPermissions extends Activity
// Permission only required for starts of activity, not broadcasts or services // Permission only required for starts of activity, not broadcasts or services
if(parts[2].equals(ActivityManageActionStartActivity.startByActivityString)) if(
(
parts.length >= 4
&&
parts[3].equals(ActivityManageActionStartActivity.startByActivityString)
)
||
parts[2].equals(ActivityManageActionStartActivity.startByActivityString)
)
addToArrayListUnique(Manifest.permission.SYSTEM_ALERT_WINDOW, requiredPermissions); addToArrayListUnique(Manifest.permission.SYSTEM_ALERT_WINDOW, requiredPermissions);
} }
break; break;
@ -1073,14 +1084,14 @@ public class ActivityPermissions extends Activity
ArrayList<String> permissionList = new ArrayList<String>(); ArrayList<String> permissionList = new ArrayList<String>();
for(String permission : permissionNames) for(String permission : permissionNames)
{ {
if(permissionNames.equals(Manifest.permission.PROCESS_OUTGOING_CALLS)) if(permission.equals(Manifest.permission.PROCESS_OUTGOING_CALLS))
{ {
if(ActivityPermissions.isPermissionDeclaredInManifest(Miscellaneous.getAnyContext(), Manifest.permission.PROCESS_OUTGOING_CALLS) && !Miscellaneous.isGooglePlayInstalled(Miscellaneous.getAnyContext())) if(ActivityPermissions.isPermissionDeclaredInManifest(Miscellaneous.getAnyContext(), Manifest.permission.PROCESS_OUTGOING_CALLS) && !Miscellaneous.isGooglePlayInstalled(Miscellaneous.getAnyContext()))
{ {
permissionList.add(permission); permissionList.add(permission);
} }
} }
else if(permissionNames.equals(Manifest.permission.SEND_SMS)) else if(permission.equals(Manifest.permission.SEND_SMS))
{ {
if(ActivityPermissions.isPermissionDeclaredInManifest(Miscellaneous.getAnyContext(), Manifest.permission.SEND_SMS) && !Miscellaneous.isGooglePlayInstalled(Miscellaneous.getAnyContext())) if(ActivityPermissions.isPermissionDeclaredInManifest(Miscellaneous.getAnyContext(), Manifest.permission.SEND_SMS) && !Miscellaneous.isGooglePlayInstalled(Miscellaneous.getAnyContext()))
{ {

View File

@ -218,7 +218,7 @@ public class DateTimeListener extends BroadcastReceiver implements AutomationLis
private static void scheduleNextAlarm() private static void scheduleNextAlarm()
{ {
Long currentTime = System.currentTimeMillis(); long currentTime = System.currentTimeMillis();
ScheduleElement scheduleCandidate = null; ScheduleElement scheduleCandidate = null;
if(alarmCandidates.size() == 0) if(alarmCandidates.size() == 0)

View File

@ -9,46 +9,41 @@
android:title="@string/generalSettings"> android:title="@string/generalSettings">
<CheckBoxPreference <CheckBoxPreference
android:key="startServiceAtSystemBoot" android:key="startServiceAtSystemBoot"
android:summary="@string/onOff" android:summary="@string/onOff"
android:title="@string/startAtSystemBoot" /> android:title="@string/startAtSystemBoot" />
<CheckBoxPreference <CheckBoxPreference
android:key="startServiceAfterAppUpdate" android:key="startServiceAfterAppUpdate"
android:summary="@string/startServiceAfterAppUpdate" android:summary="@string/startServiceAfterAppUpdate"
android:title="@string/startServiceAfterAppUpdateShort" /> android:title="@string/startServiceAfterAppUpdateShort" />
<!--
<CheckBoxPreference <CheckBoxPreference
android:key="startNewThreadForRuleActivation" android:key="showIconWhenServiceIsRunning"
android:summary="@string/startNewThreadForRuleExecution" android:summary="@string/showIconWhenServiceIsRunning"
android:title="@string/newThreadRules" /> android:title="@string/showIcon" />
-->
<CheckBoxPreference
android:key="showIconWhenServiceIsRunning"
android:summary="@string/showIconWhenServiceIsRunning"
android:title="@string/showIcon" />
<CheckBoxPreference <CheckBoxPreference
android:key="logToConsole" android:key="logToConsole"
android:summary="@string/onOff" android:summary="@string/onOff"
android:title="@string/logToConsole" /> android:title="@string/logToConsole" />
<CheckBoxPreference <CheckBoxPreference
android:key="writeLogFile" android:key="writeLogFile"
android:summary="@string/onOff" android:summary="@string/onOff"
android:title="@string/writeLogFile" /> android:title="@string/writeLogFile" />
<EditTextPreference <EditTextPreference
android:key="logLevel" android:key="logLevel"
android:summary="@string/logLevelSummary" android:summary="@string/logLevelSummary"
android:title="@string/logLevelTitle" android:title="@string/logLevelTitle"
android:inputType="number"></EditTextPreference> android:inputType="number" />
<EditTextPreference <EditTextPreference
android:key="logFileMaxSize" android:key="logFileMaxSize"
android:summary="@string/logFileMaxSizeSummary" android:summary="@string/logFileMaxSizeSummary"
android:title="@string/logFileMaxSizeTitle" android:title="@string/logFileMaxSizeTitle"
android:inputType="number"></EditTextPreference> android:inputType="number" />
<ListPreference <ListPreference
android:key="startScreen" android:key="startScreen"
@ -119,21 +114,11 @@
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory <PreferenceCategory
android:summary="@string/positioningSettings" android:summary="@string/positioningSettings"
android:title="@string/positioningSettings"> android:title="@string/positioningSettings">
<!-- android:id="@id/lstPositioningEngine"--> <CheckBoxPreference
<!--
<ListPreference
android:title="@string/positioningEngine"
android:key="positioningEngine"
android:defaultValue="0"
android:entries="@array/positioningEngineOptions"
android:entryValues="@array/positioningEngineOptionsValues" />
-->
<CheckBoxPreference
android:key="useWifiForPositioning" android:key="useWifiForPositioning"
android:summary="@string/listenToWifiState" android:summary="@string/listenToWifiState"
android:title="@string/wifiState" /> android:title="@string/wifiState" />
@ -147,19 +132,19 @@
android:key="useAccelerometerAfterIdleTime" android:key="useAccelerometerAfterIdleTime"
android:summary="@string/accelerometerTimer" android:summary="@string/accelerometerTimer"
android:title="@string/cellMastIdleTime" android:title="@string/cellMastIdleTime"
android:inputType="number"></EditTextPreference> android:inputType="number" />
<EditTextPreference <EditTextPreference
android:key="accelerometerMovementThreshold" android:key="accelerometerMovementThreshold"
android:summary="@string/accelerometerThresholdDescription" android:summary="@string/accelerometerThresholdDescription"
android:title="@string/accelerometerThreshold" android:title="@string/accelerometerThreshold"
android:inputType="number"></EditTextPreference> android:inputType="number" />
<EditTextPreference <EditTextPreference
android:key="speedMaximumTimeBetweenLocations" android:key="speedMaximumTimeBetweenLocations"
android:summary="@string/speedMaximumTimeBetweenLocations" android:summary="@string/speedMaximumTimeBetweenLocations"
android:title="@string/speedMaximumTime" android:title="@string/speedMaximumTime"
android:inputType="number"></EditTextPreference> android:inputType="number" />
<CheckBoxPreference <CheckBoxPreference
android:key="rememberLastActivePoi" android:key="rememberLastActivePoi"
@ -181,37 +166,31 @@
android:key="MINIMUM_DISTANCE_CHANGE_FOR_GPS_UPDATE" android:key="MINIMUM_DISTANCE_CHANGE_FOR_GPS_UPDATE"
android:summary="@string/minimumDistanceChangeForGpsLocationUpdates" android:summary="@string/minimumDistanceChangeForGpsLocationUpdates"
android:title="@string/distanceForGpsUpdate" android:title="@string/distanceForGpsUpdate"
android:inputType="number"></EditTextPreference> android:inputType="number" />
<EditTextPreference <EditTextPreference
android:key="MINIMUM_DISTANCE_CHANGE_FOR_NETWORK_UPDATE" android:key="MINIMUM_DISTANCE_CHANGE_FOR_NETWORK_UPDATE"
android:summary="@string/minimumDistanceChangeForNetworkLocationUpdates" android:summary="@string/minimumDistanceChangeForNetworkLocationUpdates"
android:title="@string/distanceForNetworkUpdate" android:title="@string/distanceForNetworkUpdate"
android:inputType="number"></EditTextPreference> android:inputType="number" />
<!-- We won't need this setting anymore, at least it won't be available for the user.
<EditTextPreference
android:key="SATISFACTORY_ACCURACY_GPS"
android:summary="@string/satisfactoryAccuracyGps"
android:title="@string/gpsAccuracy"
android:inputType="number"></EditTextPreference>
-->
<EditTextPreference <EditTextPreference
android:key="SATISFACTORY_ACCURACY_NETWORK" android:key="SATISFACTORY_ACCURACY_NETWORK"
android:summary="@string/satisfactoryAccuracyNetwork" android:summary="@string/satisfactoryAccuracyNetwork"
android:title="@string/networkAccuracy" android:title="@string/networkAccuracy"
android:inputType="number"></EditTextPreference> android:inputType="number" />
<EditTextPreference <EditTextPreference
android:key="MINIMUM_TIME_BETWEEN_UPDATE" android:key="MINIMUM_TIME_BETWEEN_UPDATE"
android:summary="@string/minimumTimeForLocationUpdates" android:summary="@string/minimumTimeForLocationUpdates"
android:title="@string/timeForUpdate" android:title="@string/timeForUpdate"
android:inputType="number"></EditTextPreference> android:inputType="number" />
<EditTextPreference <EditTextPreference
android:key="gpsTimeout" android:key="gpsTimeout"
android:summary="@string/timeoutForGpsComparisonsSummary" android:summary="@string/timeoutForGpsComparisonsSummary"
android:title="@string/timeoutForGpsComparisonsTitle" android:title="@string/timeoutForGpsComparisonsTitle"
android:inputType="number"></EditTextPreference> android:inputType="number"/>
</PreferenceCategory> </PreferenceCategory>
@ -223,19 +202,19 @@
android:key="timeBetweenNoiseLevelMeasurements" android:key="timeBetweenNoiseLevelMeasurements"
android:summary="@string/timeBetweenNoiseLevelMeasurementsSummary" android:summary="@string/timeBetweenNoiseLevelMeasurementsSummary"
android:title="@string/timeBetweenNoiseLevelMeasurementsTitle" android:title="@string/timeBetweenNoiseLevelMeasurementsTitle"
android:inputType="number"></EditTextPreference> android:inputType="number" />
<EditTextPreference <EditTextPreference
android:key="lengthOfNoiseLevelMeasurements" android:key="lengthOfNoiseLevelMeasurements"
android:summary="@string/lengthOfNoiseLevelMeasurementsSummary" android:summary="@string/lengthOfNoiseLevelMeasurementsSummary"
android:title="@string/lengthOfNoiseLevelMeasurementsTitle" android:title="@string/lengthOfNoiseLevelMeasurementsTitle"
android:inputType="number"></EditTextPreference> android:inputType="number" />
<EditTextPreference <EditTextPreference
android:key="referenceValueForNoiseLevelMeasurements" android:key="referenceValueForNoiseLevelMeasurements"
android:summary="@string/referenceValueForNoiseLevelMeasurementsSummary" android:summary="@string/referenceValueForNoiseLevelMeasurementsSummary"
android:title="@string/referenceValueForNoiseLevelMeasurementsTitle" android:title="@string/referenceValueForNoiseLevelMeasurementsTitle"
android:inputType="number"></EditTextPreference> android:inputType="number" />
</PreferenceCategory> </PreferenceCategory>
@ -252,19 +231,19 @@
android:key="httpAttempts" android:key="httpAttempts"
android:summary="@string/httpAttemptsSummary" android:summary="@string/httpAttemptsSummary"
android:title="@string/httpAttemptsTitle" android:title="@string/httpAttemptsTitle"
android:inputType="number"></EditTextPreference> android:inputType="number" />
<EditTextPreference <EditTextPreference
android:key="httpAttemptsTimeout" android:key="httpAttemptsTimeout"
android:summary="@string/httpAttemptsTimeoutSummary" android:summary="@string/httpAttemptsTimeoutSummary"
android:title="@string/httpAttemptsTimeoutTitle" android:title="@string/httpAttemptsTimeoutTitle"
android:inputType="number"></EditTextPreference> android:inputType="number" />
<EditTextPreference <EditTextPreference
android:key="httpAttemptGap" android:key="httpAttemptGap"
android:summary="@string/httpAttemptGapSummary" android:summary="@string/httpAttemptGapSummary"
android:title="@string/httpAttemptGapTitle" android:title="@string/httpAttemptGapTitle"
android:inputType="number"></EditTextPreference> android:inputType="number" />
</PreferenceCategory> </PreferenceCategory>
@ -276,7 +255,7 @@
android:key="timeBetweenProcessMonitorings" android:key="timeBetweenProcessMonitorings"
android:summary="@string/timeBetweenProcessMonitoringsSummary" android:summary="@string/timeBetweenProcessMonitoringsSummary"
android:title="@string/timeBetweenProcessMonitoringsTitle" android:title="@string/timeBetweenProcessMonitoringsTitle"
android:inputType="number"></EditTextPreference> android:inputType="number" />
</PreferenceCategory> </PreferenceCategory>
@ -288,7 +267,7 @@
android:key="acceptDevicePositionSignalEveryX_MilliSeconds" android:key="acceptDevicePositionSignalEveryX_MilliSeconds"
android:summary="@string/deviceOrientationTimeAcceptIntervalSummary" android:summary="@string/deviceOrientationTimeAcceptIntervalSummary"
android:title="@string/deviceOrientationTimeAcceptIntervalTitle" android:title="@string/deviceOrientationTimeAcceptIntervalTitle"
android:inputType="number"></EditTextPreference> android:inputType="number" />
</PreferenceCategory> </PreferenceCategory>
@ -300,13 +279,13 @@
android:key="activityDetectionFrequency" android:key="activityDetectionFrequency"
android:summary="@string/activityDetectionFrequencySummary" android:summary="@string/activityDetectionFrequencySummary"
android:title="@string/activityDetectionFrequencyTitle" android:title="@string/activityDetectionFrequencyTitle"
android:inputType="number"></EditTextPreference> android:inputType="number" />
<EditTextPreference <EditTextPreference
android:key="activityDetectionRequiredProbability" android:key="activityDetectionRequiredProbability"
android:summary="@string/activityDetectionRequiredProbabilitySummary" android:summary="@string/activityDetectionRequiredProbabilitySummary"
android:title="@string/activityDetectionRequiredProbabilityTitle" android:title="@string/activityDetectionRequiredProbabilityTitle"
android:inputType="number"></EditTextPreference> android:inputType="number" />
</PreferenceCategory> </PreferenceCategory>
@ -318,9 +297,8 @@
android:key="musicCheckFrequency" android:key="musicCheckFrequency"
android:summary="@string/musicCheckFrequencySummary" android:summary="@string/musicCheckFrequencySummary"
android:title="@string/musicCheckFrequencyTitle" android:title="@string/musicCheckFrequencyTitle"
android:inputType="number"></EditTextPreference> android:inputType="number" />
</PreferenceCategory> </PreferenceCategory>
</PreferenceScreen> </PreferenceScreen>

View File

@ -330,7 +330,7 @@
<string name="name">Name</string> <string name="name">Name</string>
<string name="radiusWithUnit">Radius [m]</string> <string name="radiusWithUnit">Radius [m]</string>
<string name="status">Status</string> <string name="status">Status</string>
<string name="actionDataConnection">Data connection</string> <string name="actionDataConnection">Data connection (mobile data)</string>
<string name="actionSetDataConnectionOn">turn mobile data on</string> <string name="actionSetDataConnectionOn">turn mobile data on</string>
<string name="actionSetDataConnectionOff">turn mobile data off</string> <string name="actionSetDataConnectionOff">turn mobile data off</string>
<string name="roaming">Roaming</string> <string name="roaming">Roaming</string>
@ -952,4 +952,6 @@
<string name="matches">matches</string> <string name="matches">matches</string>
<string name="doesNotMatch">does not match</string> <string name="doesNotMatch">does not match</string>
<string name="logToConsole">Log to console (logcat)</string> <string name="logToConsole">Log to console (logcat)</string>
<string name="locationPermissionRequired">Location permission is required to continue.</string>
<string name="Android14TimePickerHint">Apparently there\'s a bug in Android 14 regarding a time picker dialog. If the following screen crashes when you try to use the up and down buttons next to a field, try inputting numbers with the keyboard instead. I did never find a solution for this and my app is not the only one affected. It looks like this was fixed in Android 15.</string>
</resources> </resources>

View File

@ -1,4 +1,6 @@
* Fixed: Crash when triggering a URL without parameter pairs * Fixed: Crash when triggering a URL without parameter pairs
* Fixed: When checking for battery charging type "any" the trigger didn't fire. * Fixed: When checking for battery charging type "any" the trigger didn't fire.
* Fixed: Fixed warnings in logs for formatted notifications * Fixed: Fixed warnings in logs for formatted notifications
* Fixed: Location permission requested now when creating a new location object.
* Fixed: Display-over-other-apps permission was not requested anymore for start another app actions.
* Added: Setting to turn on/off console logging (logcat) * Added: Setting to turn on/off console logging (logcat)