diff --git a/app/src/apkFlavor/AndroidManifest.xml b/app/src/apkFlavor/AndroidManifest.xml
index 1f61bc3..3fe42be 100644
--- a/app/src/apkFlavor/AndroidManifest.xml
+++ b/app/src/apkFlavor/AndroidManifest.xml
@@ -80,6 +80,8 @@
-->
+
+
-->
+
+
+
+
= 34)
+ {
+ if(action.getParameter2().contains(Actions.alarm_set))
+ addToArrayListUnique(Manifest.permission.SET_ALARM, requiredPermissions);
+ }
if(Build.VERSION.SDK_INT >= 29)
{
String[] parts;
@@ -823,7 +828,7 @@ public class ActivityPermissions extends Activity
return requiredPermissions;
}
- protected ArrayList getRulesUsing(Trigger.Trigger_Enum triggerType)
+ protected ArrayList getRulesAsStringUsing(Trigger.Trigger_Enum triggerType)
{
ArrayList returnList = new ArrayList<>();
@@ -842,7 +847,7 @@ public class ActivityPermissions extends Activity
return returnList;
}
- protected ArrayList getRulesUsing(Action.Action_Enum actionType)
+ protected ArrayList getRulesAsStringUsing(Action.Action_Enum actionType)
{
ArrayList returnList = new ArrayList<>();
@@ -861,6 +866,44 @@ public class ActivityPermissions extends Activity
return returnList;
}
+ protected ArrayList getRulesUsing(Trigger.Trigger_Enum triggerType)
+ {
+ ArrayList returnList = new ArrayList<>();
+
+ for (Rule rule : Rule.getRuleCollection())
+ {
+ if (rule.isRuleActive())
+ {
+ for (Trigger trigger : rule.getTriggerSet())
+ {
+ if(trigger.getTriggerType().equals(triggerType))
+ returnList.add(rule);
+ }
+ }
+ }
+
+ return returnList;
+ }
+
+ protected ArrayList getRulesUsing(Action.Action_Enum actionType)
+ {
+ ArrayList returnList = new ArrayList<>();
+
+ for (Rule rule : Rule.getRuleCollection())
+ {
+ if (rule.isRuleActive())
+ {
+ for (Action action : rule.getActionSet())
+ {
+ if(action.getAction().equals(actionType))
+ returnList.add(rule);
+ }
+ }
+ }
+
+ return returnList;
+ }
+
public ArrayList getReasonForPermission(String permission)
{
ArrayList usingElements = new ArrayList();
@@ -877,139 +920,139 @@ public class ActivityPermissions extends Activity
usingElements.add(getResources().getString(R.string.storeSettings));
break;
case Manifest.permission.SCHEDULE_EXACT_ALARM:
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.timeFrame))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.timeFrame))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.calendarEvent))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.calendarEvent))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE:
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.notification))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.notification))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Action.Action_Enum.closeNotification))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.closeNotification))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case permissionNameGoogleActivityDetection:
case Manifest.permission.ACTIVITY_RECOGNITION:
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.activityDetection))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.activityDetection))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.ACCESS_COARSE_LOCATION:
case Manifest.permission.ACCESS_FINE_LOCATION:
usingElements.add(getResources().getString(R.string.manageLocations));
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.pointOfInterest))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.pointOfInterest))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.speed))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.speed))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.ACCESS_BACKGROUND_LOCATION:
usingElements.add(getResources().getString(R.string.googleLocationChicanery));
usingElements.add(getResources().getString(R.string.wifiMonitoringAlsoRequiresThis));
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.pointOfInterest))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.pointOfInterest))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.speed))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.speed))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.ACCESS_NETWORK_STATE:
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.airplaneMode))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.airplaneMode))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.bluetoothConnection))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.bluetoothConnection))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.pointOfInterest))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.pointOfInterest))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.roaming))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.roaming))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.speed))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.speed))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.wifiConnection))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.wifiConnection))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Action.Action_Enum.setAirplaneMode))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.setAirplaneMode))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Action.Action_Enum.setBluetooth))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.setBluetooth))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Action.Action_Enum.setDataConnection))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.setDataConnection))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Action.Action_Enum.setWifi))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.setWifi))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Action.Action_Enum.setWifiTethering))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.setWifiTethering))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.ACCESS_WIFI_STATE:
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.pointOfInterest))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.pointOfInterest))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.wifiConnection))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.wifiConnection))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.BLUETOOTH_ADMIN:
case Manifest.permission.BLUETOOTH:
case Manifest.permission.BLUETOOTH_CONNECT:
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.bluetoothConnection))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.bluetoothConnection))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Action.Action_Enum.setBluetooth))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.setBluetooth))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.GET_TASKS:
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.process_started_stopped))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.process_started_stopped))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.INTERNET:
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.pointOfInterest))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.pointOfInterest))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.speed))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.speed))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Action.Action_Enum.triggerUrl))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.triggerUrl))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.NFC:
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.nfcTag))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.nfcTag))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.PROCESS_OUTGOING_CALLS:
case Manifest.permission.READ_CALL_LOG:
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.phoneCall))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.phoneCall))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.READ_PHONE_STATE:
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.batteryLevel))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.batteryLevel))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.charging))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.charging))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.headsetPlugged))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.headsetPlugged))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.phoneCall))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.phoneCall))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.usb_host_connection))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.usb_host_connection))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.RECORD_AUDIO:
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.noiseLevel))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.noiseLevel))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.SEND_SMS:
- for(String ruleName : getRulesUsing(Action.Action_Enum.sendTextMessage))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.sendTextMessage))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.CALL_PHONE:
- for(String ruleName : getRulesUsing(Action.Action_Enum.startPhoneCall))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.startPhoneCall))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.SYSTEM_ALERT_WINDOW:
- for(String ruleName : getRulesUsing(Action.Action_Enum.startOtherActivity))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.startOtherActivity))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Action.Action_Enum.startPhoneCall))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.startPhoneCall))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.ANSWER_PHONE_CALLS:
- for(String ruleName : getRulesUsing(Action.Action_Enum.stopPhoneCall))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.stopPhoneCall))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.FOREGROUND_SERVICE:
usingElements.add(getResources().getString(R.string.startAutomationAsService));
break;
case Manifest.permission.READ_EXTERNAL_STORAGE:
- for(String ruleName : getRulesUsing(Action.Action_Enum.playSound))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.playSound))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Action.Action_Enum.changeSoundProfile))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.changeSoundProfile))
{
Rule tempRule = Rule.getByName(ruleName);
if(tempRule != null)
@@ -1036,7 +1079,7 @@ public class ActivityPermissions extends Activity
break;
case Manifest.permission.BIND_DEVICE_ADMIN:
- for(String ruleName : getRulesUsing(Action.Action_Enum.turnScreenOnOrOff))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.turnScreenOnOrOff))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS:
@@ -1046,17 +1089,17 @@ public class ActivityPermissions extends Activity
usingElements.add(getResources().getString(R.string.queryAllPackages));
break;
case Manifest.permission.BIND_ACCESSIBILITY_SERVICE:
- for(String ruleName : getRulesUsing(Action.Action_Enum.takeScreenshot))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.takeScreenshot))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.WRITE_SECURE_SETTINGS:
- for(String ruleName : getRulesUsing(Action.Action_Enum.setLocationService))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.setLocationService))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
- for(String ruleName : getRulesUsing(Action.Action_Enum.setSystemSetting))
+ for(String ruleName : getRulesAsStringUsing(Action.Action_Enum.setSystemSetting))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case Manifest.permission.READ_CALENDAR:
- for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.calendarEvent))
+ for(String ruleName : getRulesAsStringUsing(Trigger.Trigger_Enum.calendarEvent))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
// Proximity permission cannot be requested, but is always granted.
@@ -1064,6 +1107,23 @@ public class ActivityPermissions extends Activity
// for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.proximity))
// usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
// break;
+ case Manifest.permission.SET_ALARM:
+ if(Build.VERSION.SDK_INT >= 34)
+ {
+ outerLoop:
+ for (Rule rule : getRulesUsing(Action.Action_Enum.startOtherActivity))
+ {
+ for(Action action : rule.getActionSet())
+ {
+ if(action.getParameter2().contains(Actions.alarm_set))
+ {
+ usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), rule.getName()));
+ continue outerLoop;
+ }
+ }
+ }
+ }
+ break;
}
return usingElements;