|
|
|
@@ -740,6 +740,11 @@ public class ActivityPermissions extends Activity
|
|
|
|
|
// action.getParameter2().contains("eu.faircode.netguard.STOP_PORT_FORWARD")
|
|
|
|
|
// )
|
|
|
|
|
// addToArrayListUnique("net.kollnig.missioncontrol.permission.ADMIN", requiredPermissions);
|
|
|
|
|
if(Build.VERSION.SDK_INT >= 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<String> getRulesUsing(Trigger.Trigger_Enum triggerType)
|
|
|
|
|
protected ArrayList<String> getRulesAsStringUsing(Trigger.Trigger_Enum triggerType)
|
|
|
|
|
{
|
|
|
|
|
ArrayList<String> returnList = new ArrayList<>();
|
|
|
|
|
|
|
|
|
@@ -842,7 +847,7 @@ public class ActivityPermissions extends Activity
|
|
|
|
|
return returnList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected ArrayList<String> getRulesUsing(Action.Action_Enum actionType)
|
|
|
|
|
protected ArrayList<String> getRulesAsStringUsing(Action.Action_Enum actionType)
|
|
|
|
|
{
|
|
|
|
|
ArrayList<String> returnList = new ArrayList<>();
|
|
|
|
|
|
|
|
|
@@ -861,6 +866,44 @@ public class ActivityPermissions extends Activity
|
|
|
|
|
return returnList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected ArrayList<Rule> getRulesUsing(Trigger.Trigger_Enum triggerType)
|
|
|
|
|
{
|
|
|
|
|
ArrayList<Rule> 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<Rule> getRulesUsing(Action.Action_Enum actionType)
|
|
|
|
|
{
|
|
|
|
|
ArrayList<Rule> 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<String> getReasonForPermission(String permission)
|
|
|
|
|
{
|
|
|
|
|
ArrayList<String> usingElements = new ArrayList<String>();
|
|
|
|
@@ -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;
|
|
|
|
|