Permissions constants used.

This commit is contained in:
jens 2021-05-16 19:51:22 +02:00
parent 8ce2a09b3b
commit f325b30917
15 changed files with 322 additions and 439 deletions

View File

@ -51,6 +51,7 @@
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!-- <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />-->
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.NFC" />

View File

@ -185,6 +185,7 @@
<activity android:name=".ActivityManageTriggerBluetooth" />
<activity android:name=".ActivityMainProfiles" />
<activity android:name=".ActivityManageProfile" />
<activity android:name=".ActivityManageTriggerWifi" />
<activity android:name=".ActivityVolumeTest" />
<activity android:name=".ActivityPermissions"></activity>

View File

@ -546,12 +546,12 @@ public class Rule implements Comparable<Rule>
Miscellaneous.logEvent("i", String.format(context.getResources().getString(R.string.ruleCheckOf), this.getName()), "Checking for wifi state", 4);
if(oneTrigger.getTriggerParameter() == WifiBroadcastReceiver.lastConnectedState) // connected / disconnected
{
if(oneTrigger.getWifiName().length() > 0) // only check if any wifi name specified, otherwise any wifi will do
if(oneTrigger.getTriggerParameter2().length() > 0) // only check if any wifi name specified, otherwise any wifi will do
{
Miscellaneous.logEvent("i", String.format(context.getResources().getString(R.string.ruleCheckOf), this.getName()), "Wifi name specified, checking that.", 4);
if(!WifiBroadcastReceiver.getLastWifiSsid().equals(oneTrigger.getWifiName()))
if(!WifiBroadcastReceiver.getLastWifiSsid().equals(oneTrigger.getTriggerParameter2()))
{
Miscellaneous.logEvent("i", String.format(context.getResources().getString(R.string.ruleCheckOf), this.getName()), String.format(context.getResources().getString(R.string.ruleDoesntApplyNotTheCorrectSsid), oneTrigger.getWifiName(), WifiBroadcastReceiver.getLastWifiSsid()), 3);
Miscellaneous.logEvent("i", String.format(context.getResources().getString(R.string.ruleCheckOf), this.getName()), String.format(context.getResources().getString(R.string.ruleDoesntApplyNotTheCorrectSsid), oneTrigger.getTriggerParameter2(), WifiBroadcastReceiver.getLastWifiSsid()), 3);
return false;
}
else

View File

@ -180,6 +180,7 @@
<activity android:name=".ActivityManageTriggerBluetooth" />
<activity android:name=".ActivityMainProfiles" />
<activity android:name=".ActivityManageProfile" />
<activity android:name=".ActivityManageTriggerWifi" />
<activity android:name=".ActivityVolumeTest" />
<activity android:name=".ActivityPermissions"></activity>
<activity android:name=".ActivityManageTriggerNotification"></activity>

View File

@ -548,12 +548,12 @@ public class Rule implements Comparable<Rule>
Miscellaneous.logEvent("i", String.format(context.getResources().getString(R.string.ruleCheckOf), this.getName()), "Checking for wifi state", 4);
if(oneTrigger.getTriggerParameter() == WifiBroadcastReceiver.lastConnectedState) // connected / disconnected
{
if(oneTrigger.getWifiName().length() > 0) // only check if any wifi name specified, otherwise any wifi will do
if(oneTrigger.getTriggerParameter2().length() > 0) // only check if any wifi name specified, otherwise any wifi will do
{
Miscellaneous.logEvent("i", String.format(context.getResources().getString(R.string.ruleCheckOf), this.getName()), "Wifi name specified, checking that.", 4);
if(!WifiBroadcastReceiver.getLastWifiSsid().equals(oneTrigger.getWifiName()))
if(!WifiBroadcastReceiver.getLastWifiSsid().equals(oneTrigger.getTriggerParameter2()))
{
Miscellaneous.logEvent("i", String.format(context.getResources().getString(R.string.ruleCheckOf), this.getName()), String.format(context.getResources().getString(R.string.ruleDoesntApplyNotTheCorrectSsid), oneTrigger.getWifiName(), WifiBroadcastReceiver.getLastWifiSsid()), 3);
Miscellaneous.logEvent("i", String.format(context.getResources().getString(R.string.ruleCheckOf), this.getName()), String.format(context.getResources().getString(R.string.ruleDoesntApplyNotTheCorrectSsid), oneTrigger.getTriggerParameter2(), WifiBroadcastReceiver.getLastWifiSsid()), 3);
return false;
}
else

View File

@ -1040,6 +1040,8 @@ public class Actions
public static class MobileDataStuff
{
// https://stackoverflow.com/questions/31120082/latest-update-on-enabling-and-disabling-mobile-data-programmatically
/**
* Turns data on and off.
* Requires root permissions from lollipop on.
@ -1066,29 +1068,22 @@ public class Actions
desiredState = !isEnabled;
}
// if(isEnabled != desiredState)
// {
if(Build.VERSION.SDK_INT <= 20)
{
for(Method m : iConnectivityManagerClass.getDeclaredMethods())
{
Miscellaneous.logEvent("i", "method", m.getName(), 5);
}
if(Build.VERSION.SDK_INT <= 20)
{
for(Method m : iConnectivityManagerClass.getDeclaredMethods())
{
Miscellaneous.logEvent("i", "method", m.getName(), 5);
}
final Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);
final Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
setMobileDataEnabledMethod.setAccessible(true);
setMobileDataEnabledMethod.invoke(iConnectivityManager, desiredState);
}
else
{
return setDataConnectionWithRoot(desiredState);
}
// }
// else
// {
// Miscellaneous.logEvent("i", "setData", "Data already set to " + String.valueOf(desiredState) + ". Not doing anything.", 4);
// }
setMobileDataEnabledMethod.invoke(iConnectivityManager, desiredState);
}
else
{
return setDataConnectionWithRoot(desiredState);
}
return true;
}

View File

@ -1,5 +1,6 @@
package com.jens.automation2;
import android.Manifest;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
@ -60,11 +61,11 @@ public class ActivityMainPoi extends ActivityGeneric
}
else
{
if (!ActivityPermissions.havePermission(ActivityPermissions.permissionNameLocationCoarse, ActivityMainPoi.this) || !ActivityPermissions.havePermission(ActivityPermissions.permissionNameLocationFine, ActivityMainPoi.this))
if (!ActivityPermissions.havePermission(Manifest.permission.ACCESS_COARSE_LOCATION, ActivityMainPoi.this) || !ActivityPermissions.havePermission(Manifest.permission.ACCESS_FINE_LOCATION, ActivityMainPoi.this))
{
Intent permissionIntent = new Intent(ActivityMainPoi.this, ActivityPermissions.class);
permissionIntent.putExtra(ActivityPermissions.intentExtraName, new String[]{ActivityPermissions.permissionNameLocationCoarse, ActivityPermissions.permissionNameLocationFine});
permissionIntent.putExtra(ActivityPermissions.intentExtraName, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION});
startActivityForResult(permissionIntent, requestCodeForPermission);
}

View File

@ -1,5 +1,6 @@
package com.jens.automation2;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.PendingIntent;
@ -323,9 +324,9 @@ public class ActivityMainScreen extends ActivityGeneric
if(
Rule.isAnyRuleUsing(Trigger_Enum.pointOfInterest)
&&
ActivityPermissions.havePermission(ActivityPermissions.permissionNameLocationCoarse, Miscellaneous.getAnyContext())
ActivityPermissions.havePermission(Manifest.permission.ACCESS_COARSE_LOCATION, Miscellaneous.getAnyContext())
&&
ActivityPermissions.havePermission(ActivityPermissions.permissionNameLocationFine, Miscellaneous.getAnyContext())
ActivityPermissions.havePermission(Manifest.permission.ACCESS_FINE_LOCATION, Miscellaneous.getAnyContext())
)
activityMainScreenInstance.tvActivePoi.setText(activityMainScreenInstance.getResources().getString(R.string.stillGettingPosition));
else

View File

@ -1,5 +1,6 @@
package com.jens.automation2;
import android.Manifest;
import android.app.Activity;
import android.app.NotificationManager;
import android.content.ComponentName;
@ -47,17 +48,10 @@ public class ActivityPermissions extends Activity
TextView tvPermissionsExplanation, tvPermissionsExplanationSystemSettings, tvPermissionsExplanationLong;
static ActivityPermissions instance = null;
public static final String writeSystemSettingsPermissionName = "android.permission.WRITE_SETTINGS";
public static final String writeExternalStoragePermissionName = "android.permission.WRITE_EXTERNAL_STORAGE";
public static final String accessNotificationPolicyPermissionName = "android.permission.ACCESS_NOTIFICATION_POLICY";
public static final String permissionNameLocationFine = "android.permission.ACCESS_FINE_LOCATION";
public static final String permissionNameLocationCoarse = "android.permission.ACCESS_COARSE_LOCATION";
public static final String permissionNameLocationBackground = "android.permission.ACCESS_BACKGROUND_LOCATION";
public static final String permissionNameCall = "android.permission.PROCESS_OUTGOING_CALLS";
public static final String permissionNameStartService = "android.permission.FOREGROUND_SERVICE";
public static final String permissionNameReadNotifications = "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE";
public static final String permissionNameWireguard = "com.wireguard.android.permission.CONTROL_TUNNELS";
public final static String permissionNameWireguard = "com.wireguard.android.permission.CONTROL_TUNNELS";
public final static String permissionNameGoogleActivityDetection = "com.google.android.gms.permission.ACTIVITY_RECOGNITION";
public final static String permissionNameSuperuser = "android.permission.ACCESS_SUPERUSER";
public static ActivityPermissions getInstance()
{
if(instance == null)
@ -168,7 +162,7 @@ public class ActivityPermissions extends Activity
/*
Filter location permission and only name it once
*/
if(s.equals(permissionNameLocationCoarse) | s.equals(permissionNameLocationFine))
if(s.equals(Manifest.permission.ACCESS_COARSE_LOCATION) | s.equals(Manifest.permission.ACCESS_FINE_LOCATION))
{
if(!locationPermissionExplained)
{
@ -176,11 +170,11 @@ public class ActivityPermissions extends Activity
"<br />" +
"<u>" +
getResources().getString(R.string.readLocation)
getResources().getString(R.string.readLocation)
+ "</u>"
+ "<br />"
);
);
for (String reason : getReasonForPermission(s))
explanation.append(reason + "<br />");
@ -213,7 +207,7 @@ public class ActivityPermissions extends Activity
for(String s : requiredPerms)
{
if (s.equalsIgnoreCase(writeSystemSettingsPermissionName))
if (s.equalsIgnoreCase(Manifest.permission.WRITE_SETTINGS))
{
if (requiredPerms.length == 1)
tvPermissionsExplanationSystemSettings.setText(getResources().getString(R.string.systemSettingsNote1));
@ -249,26 +243,26 @@ public class ActivityPermissions extends Activity
for (String s : getRequiredPermissions(false))
{
if(
s.equalsIgnoreCase(permissionNameLocationBackground)
||
s.equalsIgnoreCase(permissionNameLocationFine)
||
s.equalsIgnoreCase(permissionNameLocationCoarse)
s.equalsIgnoreCase(Manifest.permission.ACCESS_BACKGROUND_LOCATION)
||
s.equalsIgnoreCase(Manifest.permission.ACCESS_FINE_LOCATION)
||
s.equalsIgnoreCase(Manifest.permission.ACCESS_COARSE_LOCATION)
)
{
if (!Miscellaneous.googleToBlameForLocation(true))
if (!havePermission(s, context))
return true;
}
else if(s.equalsIgnoreCase("android.permission.ACTIVITY_RECOGNITION") || s.equalsIgnoreCase("com.google.android.gms.permission.ACTIVITY_RECOGNITION"))
else if(s.equalsIgnoreCase(Manifest.permission.ACTIVITY_RECOGNITION) || s.equalsIgnoreCase(permissionNameGoogleActivityDetection))
{
if(!BuildConfig.FLAVOR.equalsIgnoreCase("fdroidFlavor"))
if (!havePermission(s, context))
return true;
}
else
if (!havePermission(s, context))
return true;
if (!havePermission(s, context))
return true;
}
}
@ -279,9 +273,9 @@ public class ActivityPermissions extends Activity
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
if(s.equals(writeSystemSettingsPermissionName))
if(s.equals(Manifest.permission.WRITE_SETTINGS))
return android.provider.Settings.System.canWrite(context);
else if (s.equals(accessNotificationPolicyPermissionName))
else if (s.equals(Manifest.permission.ACCESS_NOTIFICATION_POLICY))
{
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
{
@ -291,7 +285,7 @@ public class ActivityPermissions extends Activity
else
return true;
}
else if (s.equals(permissionNameReadNotifications))
else if (s.equals(Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE))
{
return verifyNotificationPermission();
}
@ -324,13 +318,13 @@ public class ActivityPermissions extends Activity
// if (!havePermission(ActivityPermissions.writeExternalStoragePermissionName, workingContext))
// addToArrayListUnique(ActivityPermissions.writeExternalStoragePermissionName, requiredPermissions);
if(!havePermission(writeSystemSettingsPermissionName, workingContext))
if(!havePermission(Manifest.permission.WRITE_SETTINGS, workingContext))
{
for (Profile profile : Profile.getProfileCollection())
{
if (profile.changeIncomingCallsRingtone)
{
addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
}
}
}
@ -344,17 +338,17 @@ public class ActivityPermissions extends Activity
{
if(
singlePermission.equalsIgnoreCase(permissionNameLocationBackground)
||
singlePermission.equalsIgnoreCase(permissionNameLocationFine)
||
singlePermission.equalsIgnoreCase(permissionNameLocationCoarse)
singlePermission.equalsIgnoreCase(Manifest.permission.ACCESS_BACKGROUND_LOCATION)
||
singlePermission.equalsIgnoreCase(Manifest.permission.ACCESS_FINE_LOCATION)
||
singlePermission.equalsIgnoreCase(Manifest.permission.ACCESS_COARSE_LOCATION)
)
{
if (!Miscellaneous.googleToBlameForLocation(true))
addToArrayListUnique(singlePermission, requiredPermissions);
}
else if(singlePermission.equalsIgnoreCase("android.permission.ACTIVITY_RECOGNITION") || singlePermission.equalsIgnoreCase("com.google.android.gms.permission.ACTIVITY_RECOGNITION"))
else if(singlePermission.equalsIgnoreCase(Manifest.permission.ACTIVITY_RECOGNITION) || singlePermission.equalsIgnoreCase(permissionNameGoogleActivityDetection))
{
if(!BuildConfig.FLAVOR.equalsIgnoreCase("fdroidFlavor"))
addToArrayListUnique(singlePermission, requiredPermissions);
@ -412,80 +406,80 @@ public class ActivityPermissions extends Activity
switch (trigger.getTriggerType())
{
case activityDetection:
addToArrayListUnique("com.google.android.gms.permission.ACTIVITY_RECOGNITION", requiredPermissions);
addToArrayListUnique("android.permission.ACTIVITY_RECOGNITION", requiredPermissions);
addToArrayListUnique(permissionNameGoogleActivityDetection, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACTIVITY_RECOGNITION, requiredPermissions);
break;
case airplaneMode:
addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
break;
case batteryLevel:
// addToArrayListUnique("android.permission.READ_PHONE_STATE", requiredPermissions);
// addToArrayListUnique("android.permission.BATTERY_STATS", requiredPermissions);
// addToArrayListUnique(Manifest.permission.READ_PHONE_STATE, requiredPermissions);
// addToArrayListUnique(Manifest.permission.BATTERY_STATS, requiredPermissions);
break;
case bluetoothConnection:
addToArrayListUnique("android.permission.BLUETOOTH_ADMIN", requiredPermissions);
addToArrayListUnique("android.permission.BLUETOOTH", requiredPermissions);
addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.BLUETOOTH_ADMIN, requiredPermissions);
addToArrayListUnique(Manifest.permission.BLUETOOTH, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
break;
case charging:
addToArrayListUnique("android.permission.READ_PHONE_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.READ_PHONE_STATE, requiredPermissions);
// addToArrayListUnique("android.permission.BATTERY_STATS", requiredPermissions);
break;
case headsetPlugged:
addToArrayListUnique("android.permission.READ_PHONE_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.READ_PHONE_STATE, requiredPermissions);
break;
case nfcTag:
addToArrayListUnique("android.permission.NFC", requiredPermissions);
addToArrayListUnique(Manifest.permission.NFC, requiredPermissions);
break;
case noiseLevel:
addToArrayListUnique("android.permission.RECORD_AUDIO", requiredPermissions);
addToArrayListUnique(Manifest.permission.RECORD_AUDIO, requiredPermissions);
break;
case phoneCall:
addToArrayListUnique("android.permission.READ_PHONE_STATE", requiredPermissions);
addToArrayListUnique(permissionNameCall, requiredPermissions);
addToArrayListUnique(Manifest.permission.READ_PHONE_STATE, requiredPermissions);
addToArrayListUnique(Manifest.permission.PROCESS_OUTGOING_CALLS, requiredPermissions);
break;
case pointOfInterest:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
{
addToArrayListUnique(permissionNameLocationBackground, requiredPermissions);
addToArrayListUnique(permissionNameLocationFine, requiredPermissions);
addToArrayListUnique(permissionNameLocationCoarse, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_BACKGROUND_LOCATION, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_FINE_LOCATION, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_COARSE_LOCATION, requiredPermissions);
}
else
{
addToArrayListUnique(permissionNameLocationFine, requiredPermissions);
addToArrayListUnique(permissionNameLocationCoarse, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_FINE_LOCATION, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_COARSE_LOCATION, requiredPermissions);
}
addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", requiredPermissions);
addToArrayListUnique("android.permission.INTERNET", requiredPermissions);
addToArrayListUnique("android.permission.ACCESS_WIFI_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
addToArrayListUnique(Manifest.permission.INTERNET, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_WIFI_STATE, requiredPermissions);
break;
case process_started_stopped:
addToArrayListUnique("android.permission.GET_TASKS", requiredPermissions);
addToArrayListUnique(Manifest.permission.GET_TASKS, requiredPermissions);
break;
case roaming:
addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
break;
case speed:
addToArrayListUnique(permissionNameLocationFine, requiredPermissions);
addToArrayListUnique(permissionNameLocationCoarse, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_FINE_LOCATION, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_COARSE_LOCATION, requiredPermissions);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
addToArrayListUnique(permissionNameLocationBackground, requiredPermissions);
addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", requiredPermissions);
addToArrayListUnique("android.permission.INTERNET", requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_BACKGROUND_LOCATION, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
addToArrayListUnique(Manifest.permission.INTERNET, requiredPermissions);
break;
case timeFrame:
break;
case usb_host_connection:
addToArrayListUnique("android.permission.READ_PHONE_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.READ_PHONE_STATE, requiredPermissions);
// addToArrayListUnique("android.permission.BATTERY_STATS", requiredPermissions);
break;
case wifiConnection:
addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", requiredPermissions);
addToArrayListUnique("android.permission.ACCESS_WIFI_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_WIFI_STATE, requiredPermissions);
break;
case notification:
addToArrayListUnique(permissionNameReadNotifications, requiredPermissions);
addToArrayListUnique(Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE, requiredPermissions);
break;
default:
break;
@ -497,56 +491,56 @@ public class ActivityPermissions extends Activity
switch (action.getAction())
{
case changeSoundProfile:
addToArrayListUnique("android.permission.MODIFY_AUDIO_SETTINGS", requiredPermissions);
addToArrayListUnique(Manifest.permission.MODIFY_AUDIO_SETTINGS, requiredPermissions);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
addToArrayListUnique(accessNotificationPolicyPermissionName, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NOTIFICATION_POLICY, requiredPermissions);
break;
case disableScreenRotation:
addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
break;
case enableScreenRotation:
addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
break;
case playMusic:
break;
case sendTextMessage:
addToArrayListUnique("android.permission.SEND_SMS", requiredPermissions);
checkPermissionsInVariableUse(action.getParameter2(), requiredPermissions);
addToArrayListUnique(Manifest.permission.SEND_SMS, requiredPermissions);
checkPermissionsInVariableUse(action.getParameter2(), requiredPermissions);
break;
case setAirplaneMode:
addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions);
addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", requiredPermissions);
addToArrayListUnique("android.permission.ACCESS_SUPERUSER", requiredPermissions);
addToArrayListUnique("android.permission.CHANGE_NETWORK_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
addToArrayListUnique(permissionNameSuperuser, requiredPermissions);
addToArrayListUnique(Manifest.permission.CHANGE_NETWORK_STATE, requiredPermissions);
break;
case setBluetooth:
addToArrayListUnique("android.permission.BLUETOOTH_ADMIN", requiredPermissions);
addToArrayListUnique("android.permission.BLUETOOTH", requiredPermissions);
addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", requiredPermissions);
addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions);
addToArrayListUnique(Manifest.permission.BLUETOOTH_ADMIN, requiredPermissions);
addToArrayListUnique(Manifest.permission.BLUETOOTH, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
break;
case setDataConnection:
addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions);
addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", requiredPermissions);
addToArrayListUnique("android.permission.ACCESS_SUPERUSER", requiredPermissions);
addToArrayListUnique("android.permission.CHANGE_NETWORK_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
addToArrayListUnique(permissionNameSuperuser, requiredPermissions);
addToArrayListUnique(Manifest.permission.CHANGE_NETWORK_STATE, requiredPermissions);
break;
case setDisplayRotation:
addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
break;
case setUsbTethering:
addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions);
addToArrayListUnique("android.permission.CHANGE_NETWORK_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
addToArrayListUnique(Manifest.permission.CHANGE_NETWORK_STATE, requiredPermissions);
break;
case setWifi:
addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions);
addToArrayListUnique("android.permission.CHANGE_NETWORK_STATE", requiredPermissions);
addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
addToArrayListUnique(Manifest.permission.CHANGE_NETWORK_STATE, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
break;
case setWifiTethering:
addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions);
addToArrayListUnique("android.permission.CHANGE_NETWORK_STATE", requiredPermissions);
addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
addToArrayListUnique(Manifest.permission.CHANGE_NETWORK_STATE, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
/*
https://stackoverflow.com/questions/46284914/how-to-enable-android-o-wifi-hotspot-programmatically
@ -561,11 +555,11 @@ public class ActivityPermissions extends Activity
case startOtherActivity:
if(
action.getParameter2().contains(Actions.wireguard_tunnel_up)
||
action.getParameter2().contains(Actions.wireguard_tunnel_down)
||
action.getParameter2().contains(Actions.wireguard_tunnel_refresh)
)
||
action.getParameter2().contains(Actions.wireguard_tunnel_down)
||
action.getParameter2().contains(Actions.wireguard_tunnel_refresh)
)
addToArrayListUnique(ActivityPermissions.permissionNameWireguard, requiredPermissions);
// if(
// action.getParameter2().contains("eu.faircode.netguard.START_PORT_FORWARD")
@ -575,53 +569,53 @@ public class ActivityPermissions extends Activity
// addToArrayListUnique("net.kollnig.missioncontrol.permission.ADMIN", requiredPermissions);
break;
case triggerUrl:
addToArrayListUnique("android.permission.INTERNET", requiredPermissions);
addToArrayListUnique(Manifest.permission.INTERNET, requiredPermissions);
checkPermissionsInVariableUse(action.getParameter2(), requiredPermissions);
break;
case turnBluetoothOff:
addToArrayListUnique("android.permission.BLUETOOTH_ADMIN", requiredPermissions);
addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions);
addToArrayListUnique("android.permission.BLUETOOTH", requiredPermissions);
addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.BLUETOOTH_ADMIN, requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
addToArrayListUnique(Manifest.permission.BLUETOOTH, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
break;
case turnBluetoothOn:
addToArrayListUnique("android.permission.BLUETOOTH_ADMIN", requiredPermissions);
addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions);
addToArrayListUnique("android.permission.BLUETOOTH", requiredPermissions);
addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.BLUETOOTH_ADMIN, requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
addToArrayListUnique(Manifest.permission.BLUETOOTH, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
break;
case turnUsbTetheringOff:
addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions);
addToArrayListUnique("android.permission.CHANGE_NETWORK_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
addToArrayListUnique(Manifest.permission.CHANGE_NETWORK_STATE, requiredPermissions);
break;
case turnUsbTetheringOn:
addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions);
addToArrayListUnique("android.permission.CHANGE_NETWORK_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
addToArrayListUnique(Manifest.permission.CHANGE_NETWORK_STATE, requiredPermissions);
break;
case turnWifiOff:
addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions);
addToArrayListUnique("android.permission.CHANGE_NETWORK_STATE", requiredPermissions);
addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
addToArrayListUnique(Manifest.permission.CHANGE_NETWORK_STATE, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
break;
case turnWifiOn:
addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions);
addToArrayListUnique("android.permission.CHANGE_NETWORK_STATE", requiredPermissions);
addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
addToArrayListUnique(Manifest.permission.CHANGE_NETWORK_STATE, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
break;
case turnWifiTetheringOff:
addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions);
addToArrayListUnique("android.permission.CHANGE_NETWORK_STATE", requiredPermissions);
addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
addToArrayListUnique(Manifest.permission.CHANGE_NETWORK_STATE, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
break;
case turnWifiTetheringOn:
addToArrayListUnique(writeSystemSettingsPermissionName, requiredPermissions);
addToArrayListUnique("android.permission.CHANGE_NETWORK_STATE", requiredPermissions);
addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", requiredPermissions);
addToArrayListUnique(Manifest.permission.WRITE_SETTINGS, requiredPermissions);
addToArrayListUnique(Manifest.permission.CHANGE_NETWORK_STATE, requiredPermissions);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, requiredPermissions);
break;
case waitBeforeNextAction:
break;
case wakeupDevice:
addToArrayListUnique("android.permission.WAKE_LOCK", requiredPermissions);
addToArrayListUnique(Manifest.permission.WAKE_LOCK, requiredPermissions);
break;
default:
break;
@ -635,7 +629,7 @@ public class ActivityPermissions extends Activity
protected ArrayList<String> getRulesUsing(Trigger.Trigger_Enum triggerType)
{
ArrayList<String> returnList = new ArrayList<>();
for (Rule rule : Rule.getRuleCollection())
{
if (rule.isRuleActive())
@ -647,7 +641,7 @@ public class ActivityPermissions extends Activity
}
}
}
return returnList;
}
@ -669,38 +663,38 @@ public class ActivityPermissions extends Activity
return returnList;
}
public ArrayList<String> getReasonForPermission(String permission)
{
ArrayList<String> usingElements = new ArrayList<String>();
switch(permission)
{
case "android.permission.RECEIVE_BOOT_COMPLETED":
case Manifest.permission.RECEIVE_BOOT_COMPLETED:
usingElements.add(getResources().getString(R.string.startAtSystemBoot));
break;
case accessNotificationPolicyPermissionName:
case Manifest.permission.ACCESS_NOTIFICATION_POLICY:
usingElements.add(getResources().getString(R.string.actionChangeSoundProfile));
break;
case "android.permission.WRITE_EXTERNAL_STORAGE":
case Manifest.permission.WRITE_EXTERNAL_STORAGE:
usingElements.add(getResources().getString(R.string.storeSettings));
break;
case permissionNameReadNotifications:
case Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE:
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.notification))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case "com.google.android.gms.permission.ACTIVITY_RECOGNITION":
case permissionNameGoogleActivityDetection:
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.activityDetection))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case "android.permission.ACTIVITY_RECOGNITION":
case Manifest.permission.ACTIVITY_RECOGNITION:
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.activityDetection))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case permissionNameLocationCoarse:
case Manifest.permission.ACCESS_COARSE_LOCATION:
// usingElements.add(getResources().getString(R.string.android_permission_ACCESS_COARSE_LOCATION));
usingElements.add(getResources().getString(R.string.manageLocations));
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.pointOfInterest))
@ -708,21 +702,21 @@ public class ActivityPermissions extends Activity
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.speed))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case permissionNameLocationFine:
case Manifest.permission.ACCESS_FINE_LOCATION:
usingElements.add(getResources().getString(R.string.manageLocations));
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.pointOfInterest))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.speed))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case permissionNameLocationBackground:
case Manifest.permission.ACCESS_BACKGROUND_LOCATION:
usingElements.add(getResources().getString(R.string.googleLocationChicanery));
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.pointOfInterest))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.speed))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case "android.permission.ACCESS_NETWORK_STATE":
case Manifest.permission.ACCESS_NETWORK_STATE:
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.airplaneMode))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.bluetoothConnection))
@ -758,7 +752,7 @@ public class ActivityPermissions extends Activity
for(String ruleName : getRulesUsing(Action.Action_Enum.turnWifiTetheringOn))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case "android.permission.ACCESS_WIFI_STATE":
case Manifest.permission.ACCESS_WIFI_STATE:
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.pointOfInterest))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.wifiConnection))
@ -772,7 +766,7 @@ public class ActivityPermissions extends Activity
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.usb_host_connection))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;*/
case "android.permission.BLUETOOTH_ADMIN":
case Manifest.permission.BLUETOOTH_ADMIN:
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.bluetoothConnection))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
for(String ruleName : getRulesUsing(Action.Action_Enum.setBluetooth))
@ -782,7 +776,7 @@ public class ActivityPermissions extends Activity
for(String ruleName : getRulesUsing(Action.Action_Enum.turnBluetoothOn))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case "android.permission.BLUETOOTH":
case Manifest.permission.BLUETOOTH:
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.bluetoothConnection))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
for(String ruleName : getRulesUsing(Action.Action_Enum.setBluetooth))
@ -792,11 +786,11 @@ public class ActivityPermissions extends Activity
for(String ruleName : getRulesUsing(Action.Action_Enum.turnBluetoothOn))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case "android.permission.GET_TASKS":
case Manifest.permission.GET_TASKS:
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.process_started_stopped))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case "android.permission.INTERNET":
case Manifest.permission.INTERNET:
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.pointOfInterest))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.speed))
@ -804,15 +798,15 @@ public class ActivityPermissions extends Activity
for(String ruleName : getRulesUsing(Action.Action_Enum.triggerUrl))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case "android.permission.NFC":
case Manifest.permission.NFC:
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.nfcTag))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case permissionNameCall:
case Manifest.permission.PROCESS_OUTGOING_CALLS:
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.phoneCall))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case "android.permission.READ_PHONE_STATE":
case Manifest.permission.READ_PHONE_STATE:
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.batteryLevel))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.charging))
@ -824,15 +818,15 @@ public class ActivityPermissions extends Activity
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.usb_host_connection))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case "android.permission.RECORD_AUDIO":
case Manifest.permission.RECORD_AUDIO:
for(String ruleName : getRulesUsing(Trigger.Trigger_Enum.noiseLevel))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case "android.permission.SEND_SMS":
case Manifest.permission.SEND_SMS:
for(String ruleName : getRulesUsing(Action.Action_Enum.sendTextMessage))
usingElements.add(String.format(getResources().getString(R.string.ruleXrequiresThis), ruleName));
break;
case "android.permission.FOREGROUND_SERVICE":
case Manifest.permission.FOREGROUND_SERVICE:
usingElements.add(getResources().getString(R.string.startAutomationAsService));
break;
}
@ -874,7 +868,7 @@ public class ActivityPermissions extends Activity
}
if (requestCode == requestCodeForPermissionsNotifications)
if(havePermission(permissionNameReadNotifications, ActivityPermissions.this))
if(havePermission(Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE, ActivityPermissions.this))
requestPermissions(cachedPermissionsToRequest, true);
}
}
@ -884,16 +878,16 @@ public class ActivityPermissions extends Activity
ArrayList<String> permissionList = new ArrayList<String>();
for(String permission : permissionNames)
{
if(permissionNames.equals(permissionNameCall))
if(permissionNames.equals(Manifest.permission.PROCESS_OUTGOING_CALLS))
{
if(ActivityPermissions.isPermissionDeclaratedInManifest(Miscellaneous.getAnyContext(), permissionNameCall) && !Miscellaneous.isGooglePlayInstalled(Miscellaneous.getAnyContext()))
{
permissionList.add(permission);
}
if(ActivityPermissions.isPermissionDeclaratedInManifest(Miscellaneous.getAnyContext(), Manifest.permission.PROCESS_OUTGOING_CALLS) && !Miscellaneous.isGooglePlayInstalled(Miscellaneous.getAnyContext()))
{
permissionList.add(permission);
}
}
else if(permissionNames.equals("android.permission.SEND_SMS"))
else if(permissionNames.equals(Manifest.permission.SEND_SMS))
{
if(ActivityPermissions.isPermissionDeclaratedInManifest(Miscellaneous.getAnyContext(), "android.permission.SEND_SMS") && !Miscellaneous.isGooglePlayInstalled(Miscellaneous.getAnyContext()))
if(ActivityPermissions.isPermissionDeclaratedInManifest(Miscellaneous.getAnyContext(), Manifest.permission.SEND_SMS) && !Miscellaneous.isGooglePlayInstalled(Miscellaneous.getAnyContext()))
{
permissionList.add(permission);
}
@ -917,7 +911,7 @@ public class ActivityPermissions extends Activity
{
for (String s : requiredPermissions)
{
if (s.equalsIgnoreCase(writeSystemSettingsPermissionName))
if (s.equalsIgnoreCase(Manifest.permission.WRITE_SETTINGS))
{
requiredPermissions.remove(s);
cachedPermissionsToRequest = requiredPermissions;
@ -926,7 +920,7 @@ public class ActivityPermissions extends Activity
startActivityForResult(intent, requestCodeForPermissionsWriteSettings);
return;
}
else if (s.equalsIgnoreCase(accessNotificationPolicyPermissionName))
else if (s.equalsIgnoreCase(Manifest.permission.ACCESS_NOTIFICATION_POLICY))
{
requiredPermissions.remove(s);
cachedPermissionsToRequest = requiredPermissions;
@ -935,7 +929,7 @@ public class ActivityPermissions extends Activity
startActivityForResult(intent, requestCodeForPermissionsNotificationPolicy);
return;
}
else if (s.equalsIgnoreCase(permissionNameReadNotifications))
else if (s.equalsIgnoreCase(Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE))
{
requiredPermissions.remove(s);
cachedPermissionsToRequest = requiredPermissions;
@ -957,25 +951,25 @@ public class ActivityPermissions extends Activity
if(requiredPermissions.size() > 0)
{
if(requiredPermissions.contains(permissionNameCall))
if(requiredPermissions.contains(Manifest.permission.PROCESS_OUTGOING_CALLS))
{
if(!ActivityPermissions.isPermissionDeclaratedInManifest(Miscellaneous.getAnyContext(), "android.permission.SEND_SMS")
&&
Miscellaneous.isGooglePlayInstalled(Miscellaneous.getAnyContext())
)
{
requiredPermissions.remove(permissionNameCall);
Miscellaneous.messageBox("Problem", getResources().getString(R.string.googleSarcasm), ActivityPermissions.this).show();
}
}
if(requiredPermissions.contains("android.permission.SEND_SMS"))
{
if(!ActivityPermissions.isPermissionDeclaratedInManifest(Miscellaneous.getAnyContext(), "android.permission.SEND_SMS")
if(!ActivityPermissions.isPermissionDeclaratedInManifest(Miscellaneous.getAnyContext(), Manifest.permission.SEND_SMS)
&&
Miscellaneous.isGooglePlayInstalled(Miscellaneous.getAnyContext())
)
{
requiredPermissions.remove("android.permission.SEND_SMS");
requiredPermissions.remove(Manifest.permission.PROCESS_OUTGOING_CALLS);
Miscellaneous.messageBox("Problem", getResources().getString(R.string.googleSarcasm), ActivityPermissions.this).show();
}
}
if(requiredPermissions.contains(Manifest.permission.SEND_SMS))
{
if(!ActivityPermissions.isPermissionDeclaratedInManifest(Miscellaneous.getAnyContext(), Manifest.permission.SEND_SMS)
&&
Miscellaneous.isGooglePlayInstalled(Miscellaneous.getAnyContext())
)
{
requiredPermissions.remove(Manifest.permission.SEND_SMS);
Miscellaneous.messageBox("Problem", getResources().getString(R.string.googleSarcasm), ActivityPermissions.this).show();
}
}
@ -1021,7 +1015,7 @@ public class ActivityPermissions extends Activity
for (int i=0; i < grantResults.length; i++)
{
if(permissions[i].equalsIgnoreCase(writeExternalStoragePermissionName) && grantResults[i] == PackageManager.PERMISSION_GRANTED)
if(permissions[i].equalsIgnoreCase(Manifest.permission.WRITE_EXTERNAL_STORAGE) && grantResults[i] == PackageManager.PERMISSION_GRANTED)
{
// We just got permission to read the config file. Read again.
try
@ -1056,9 +1050,9 @@ public class ActivityPermissions extends Activity
}
}
/*
* In theory we now have 3 arrays that hold the features which can't function.
*/
/*
* In theory we now have 3 arrays that hold the features which can't function.
*/
/*StringBuilder message = new StringBuilder();
for (String s : affectedGeneralList)
@ -1129,27 +1123,27 @@ public class ActivityPermissions extends Activity
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
{
addToArrayListUnique(permissionNameLocationBackground, permsList);
addToArrayListUnique(permissionNameLocationFine, permsList);
addToArrayListUnique(permissionNameLocationCoarse, permsList);
addToArrayListUnique(Manifest.permission.ACCESS_BACKGROUND_LOCATION, permsList);
addToArrayListUnique(Manifest.permission.ACCESS_FINE_LOCATION, permsList);
addToArrayListUnique(Manifest.permission.ACCESS_COARSE_LOCATION, permsList);
}
else
{
addToArrayListUnique(permissionNameLocationFine, permsList);
addToArrayListUnique(permissionNameLocationCoarse, permsList);
addToArrayListUnique(Manifest.permission.ACCESS_FINE_LOCATION, permsList);
addToArrayListUnique(Manifest.permission.ACCESS_COARSE_LOCATION, permsList);
}
addToArrayListUnique("android.permission.ACCESS_NETWORK_STATE", permsList);
addToArrayListUnique("android.permission.INTERNET", permsList);
addToArrayListUnique("android.permission.ACCESS_WIFI_STATE", permsList);
addToArrayListUnique(Manifest.permission.ACCESS_NETWORK_STATE, permsList);
addToArrayListUnique(Manifest.permission.INTERNET, permsList);
addToArrayListUnique(Manifest.permission.ACCESS_WIFI_STATE, permsList);
}
else if(text.contains("[phonenr]"))
{
addToArrayListUnique("android.permission.READ_PHONE_STATE", permsList);
addToArrayListUnique(permissionNameCall, permsList);
addToArrayListUnique(Manifest.permission.READ_PHONE_STATE, permsList);
addToArrayListUnique(Manifest.permission.PROCESS_OUTGOING_CALLS, permsList);
}
else if(text.contains("[notificationTitle]") || text.contains("[notificationTitle]"))
{
addToArrayListUnique(permissionNameReadNotifications, permsList);
addToArrayListUnique(Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE, permsList);
}
return permsList;
@ -1230,104 +1224,104 @@ public class ActivityPermissions extends Activity
protected static void fillPermissionMaps()
{
mapGeneralPermissions = new HashMap<String, String>();
mapGeneralPermissions.put("general", "android.permission.RECEIVE_BOOT_COMPLETED");
mapGeneralPermissions.put("general", "android.permission.WRITE_EXTERNAL_STORAGE");
mapGeneralPermissions.put("general", Manifest.permission.RECEIVE_BOOT_COMPLETED);
mapGeneralPermissions.put("general", Manifest.permission.WRITE_EXTERNAL_STORAGE);
mapTriggerPermissions = new HashMap<String, String>();
mapTriggerPermissions.put("activityDetection", "com.google.android.gms.permission.ACTIVITY_RECOGNITION");
mapTriggerPermissions.put("activityDetection", "android.permission.ACTIVITY_RECOGNITION");
mapTriggerPermissions.put("airplaneMode", "android.permission.ACCESS_NETWORK_STATE");
mapTriggerPermissions.put("batteryLevel", "android.permission.READ_PHONE_STATE");
mapTriggerPermissions.put("batteryLevel", "android.permission.BATTERY_STATS");
mapTriggerPermissions.put("bluetoothConnection", "android.permission.BLUETOOTH_ADMIN");
mapTriggerPermissions.put("bluetoothConnection", "android.permission.BLUETOOTH");
mapTriggerPermissions.put("bluetoothConnection", "android.permission.ACCESS_NETWORK_STATE");
mapTriggerPermissions.put("charging", "android.permission.READ_PHONE_STATE");
mapTriggerPermissions.put("charging", "android.permission.BATTERY_STATS");
mapTriggerPermissions.put("headsetPlugged", "android.permission.READ_PHONE_STATE");
mapTriggerPermissions.put("nfcTag", "android.permission.NFC");
mapTriggerPermissions.put("noiseLevel", "android.permission.RECORD_AUDIO");
mapTriggerPermissions.put("phoneCall", "android.permission.READ_PHONE_STATE");
mapTriggerPermissions.put("phoneCall", permissionNameCall);
mapTriggerPermissions.put("pointOfInterest", permissionNameLocationFine);
mapTriggerPermissions.put("pointOfInterest", permissionNameLocationCoarse);
mapTriggerPermissions.put("activityDetection", permissionNameGoogleActivityDetection);
mapTriggerPermissions.put("activityDetection", Manifest.permission.ACTIVITY_RECOGNITION);
mapTriggerPermissions.put("airplaneMode", Manifest.permission.ACCESS_NETWORK_STATE);
mapTriggerPermissions.put("batteryLevel", Manifest.permission.READ_PHONE_STATE);
mapTriggerPermissions.put("batteryLevel", Manifest.permission.BATTERY_STATS);
mapTriggerPermissions.put("bluetoothConnection", Manifest.permission.BLUETOOTH_ADMIN);
mapTriggerPermissions.put("bluetoothConnection", Manifest.permission.BLUETOOTH);
mapTriggerPermissions.put("bluetoothConnection", Manifest.permission.ACCESS_NETWORK_STATE);
mapTriggerPermissions.put("charging", Manifest.permission.READ_PHONE_STATE);
mapTriggerPermissions.put("charging", Manifest.permission.BATTERY_STATS);
mapTriggerPermissions.put("headsetPlugged", Manifest.permission.READ_PHONE_STATE);
mapTriggerPermissions.put("nfcTag", Manifest.permission.NFC);
mapTriggerPermissions.put("noiseLevel", Manifest.permission.RECORD_AUDIO);
mapTriggerPermissions.put("phoneCall", Manifest.permission.READ_PHONE_STATE);
mapTriggerPermissions.put("phoneCall", Manifest.permission.PROCESS_OUTGOING_CALLS);
mapTriggerPermissions.put("pointOfInterest", Manifest.permission.ACCESS_FINE_LOCATION);
mapTriggerPermissions.put("pointOfInterest", Manifest.permission.ACCESS_COARSE_LOCATION);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
mapTriggerPermissions.put("pointOfInterest", permissionNameLocationBackground);
mapTriggerPermissions.put("pointOfInterest", "android.permission.ACCESS_NETWORK_STATE");
mapTriggerPermissions.put("pointOfInterest", "android.permission.INTERNET");
mapTriggerPermissions.put("pointOfInterest", "android.permission.ACCESS_WIFI_STATE");
mapTriggerPermissions.put("process_started_stopped", "android.permission.GET_TASKS");
mapTriggerPermissions.put("roaming", "android.permission.ACCESS_NETWORK_STATE");
mapTriggerPermissions.put("speed", permissionNameLocationFine);
mapTriggerPermissions.put("speed", permissionNameLocationCoarse);
mapTriggerPermissions.put("pointOfInterest", Manifest.permission.ACCESS_BACKGROUND_LOCATION);
mapTriggerPermissions.put("pointOfInterest", Manifest.permission.ACCESS_NETWORK_STATE);
mapTriggerPermissions.put("pointOfInterest", Manifest.permission.INTERNET);
mapTriggerPermissions.put("pointOfInterest", Manifest.permission.ACCESS_WIFI_STATE);
mapTriggerPermissions.put("process_started_stopped", Manifest.permission.GET_TASKS);
mapTriggerPermissions.put("roaming", Manifest.permission.ACCESS_NETWORK_STATE);
mapTriggerPermissions.put("speed", Manifest.permission.ACCESS_FINE_LOCATION);
mapTriggerPermissions.put("speed", Manifest.permission.ACCESS_COARSE_LOCATION);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
mapTriggerPermissions.put("speed", permissionNameLocationBackground);
mapTriggerPermissions.put("speed", "android.permission.ACCESS_NETWORK_STATE");
mapTriggerPermissions.put("speed", "android.permission.INTERNET");
mapTriggerPermissions.put("speed", Manifest.permission.ACCESS_BACKGROUND_LOCATION);
mapTriggerPermissions.put("speed", Manifest.permission.ACCESS_NETWORK_STATE);
mapTriggerPermissions.put("speed", Manifest.permission.INTERNET);
// map.put("timeFrame", "");
mapTriggerPermissions.put("usb_host_connection", "android.permission.READ_PHONE_STATE");
mapTriggerPermissions.put("usb_host_connection", "android.permission.BATTERY_STATS");
mapTriggerPermissions.put("wifiConnection", "android.permission.ACCESS_NETWORK_STATE");
mapTriggerPermissions.put("wifiConnection", "android.permission.ACCESS_WIFI_STATE");
mapTriggerPermissions.put("usb_host_connection", Manifest.permission.READ_PHONE_STATE);
mapTriggerPermissions.put("usb_host_connection", Manifest.permission.BATTERY_STATS);
mapTriggerPermissions.put("wifiConnection", Manifest.permission.ACCESS_NETWORK_STATE);
mapTriggerPermissions.put("wifiConnection", Manifest.permission.ACCESS_WIFI_STATE);
mapActionPermissions = new HashMap<String, String>();
mapActionPermissions.put("changeSoundProfile", "android.permission.MODIFY_AUDIO_SETTINGS");
mapActionPermissions.put("changeSoundProfile", accessNotificationPolicyPermissionName);
mapActionPermissions.put("disableScreenRotation", writeSystemSettingsPermissionName);
mapActionPermissions.put("enableScreenRotation", writeSystemSettingsPermissionName);
mapActionPermissions.put("changeSoundProfile", Manifest.permission.MODIFY_AUDIO_SETTINGS);
mapActionPermissions.put("changeSoundProfile", Manifest.permission.ACCESS_NOTIFICATION_POLICY);
mapActionPermissions.put("disableScreenRotation", Manifest.permission.WRITE_SETTINGS);
mapActionPermissions.put("enableScreenRotation", Manifest.permission.WRITE_SETTINGS);
// mapActionPermissions.put("playMusic", "");
mapActionPermissions.put("sendTextMessage", "android.permission.SEND_SMS");
mapActionPermissions.put("setAirplaneMode", writeSystemSettingsPermissionName);
mapActionPermissions.put("setAirplaneMode", "android.permission.ACCESS_NETWORK_STATE");
mapActionPermissions.put("setAirplaneMode", "android.permission.ACCESS_SUPERUSER");
mapActionPermissions.put("setAirplaneMode", "android.permission.CHANGE_NETWORK_STATE");
mapActionPermissions.put("setBluetooth", "android.permission.BLUETOOTH_ADMIN");
mapActionPermissions.put("setBluetooth", "android.permission.BLUETOOTH");
mapActionPermissions.put("setBluetooth", "android.permission.ACCESS_NETWORK_STATE");
mapActionPermissions.put("setBluetooth", writeSystemSettingsPermissionName);
mapActionPermissions.put("setDataConnection", writeSystemSettingsPermissionName);
mapActionPermissions.put("setDataConnection", "android.permission.ACCESS_NETWORK_STATE");
mapActionPermissions.put("setDataConnection", "android.permission.ACCESS_SUPERUSER");
mapActionPermissions.put("setDataConnection", "android.permission.CHANGE_NETWORK_STATE");
mapActionPermissions.put("setDisplayRotation", writeSystemSettingsPermissionName);
mapActionPermissions.put("setUsbTethering", writeSystemSettingsPermissionName);
mapActionPermissions.put("setUsbTethering", "android.permission.CHANGE_NETWORK_STATE");
mapActionPermissions.put("setWifi", writeSystemSettingsPermissionName);
mapActionPermissions.put("setWifi", "android.permission.CHANGE_NETWORK_STATE");
mapActionPermissions.put("setWifi", "android.permission.ACCESS_NETWORK_STATE");
mapActionPermissions.put("setWifiTethering", writeSystemSettingsPermissionName);
mapActionPermissions.put("setWifiTethering", "android.permission.CHANGE_NETWORK_STATE");
mapActionPermissions.put("setWifiTethering", "android.permission.ACCESS_NETWORK_STATE");
// mapActionPermissions.put("speakText", accessNotificationPolicyPermissionName);
mapActionPermissions.put("sendTextMessage", Manifest.permission.SEND_SMS);
mapActionPermissions.put("setAirplaneMode", Manifest.permission.WRITE_SETTINGS);
mapActionPermissions.put("setAirplaneMode", Manifest.permission.ACCESS_NETWORK_STATE);
mapActionPermissions.put("setAirplaneMode", permissionNameSuperuser);
mapActionPermissions.put("setAirplaneMode", Manifest.permission.CHANGE_NETWORK_STATE);
mapActionPermissions.put("setBluetooth", Manifest.permission.BLUETOOTH_ADMIN);
mapActionPermissions.put("setBluetooth", Manifest.permission.BLUETOOTH);
mapActionPermissions.put("setBluetooth", Manifest.permission.ACCESS_NETWORK_STATE);
mapActionPermissions.put("setBluetooth", Manifest.permission.WRITE_SETTINGS);
mapActionPermissions.put("setDataConnection", Manifest.permission.WRITE_SETTINGS);
mapActionPermissions.put("setDataConnection", Manifest.permission.ACCESS_NETWORK_STATE);
mapActionPermissions.put("setDataConnection", permissionNameSuperuser);
mapActionPermissions.put("setDataConnection", Manifest.permission.CHANGE_NETWORK_STATE);
mapActionPermissions.put("setDisplayRotation", Manifest.permission.WRITE_SETTINGS);
mapActionPermissions.put("setUsbTethering", Manifest.permission.WRITE_SETTINGS);
mapActionPermissions.put("setUsbTethering", Manifest.permission.CHANGE_NETWORK_STATE);
mapActionPermissions.put("setWifi", Manifest.permission.WRITE_SETTINGS);
mapActionPermissions.put("setWifi", Manifest.permission.CHANGE_NETWORK_STATE);
mapActionPermissions.put("setWifi", Manifest.permission.ACCESS_NETWORK_STATE);
mapActionPermissions.put("setWifiTethering", Manifest.permission.WRITE_SETTINGS);
mapActionPermissions.put("setWifiTethering", Manifest.permission.CHANGE_NETWORK_STATE);
mapActionPermissions.put("setWifiTethering", Manifest.permission.ACCESS_NETWORK_STATE);
// mapActionPermissions.put("speakText", Manifest.permission.ACCESS_NOTIFICATION_POLICY);
// mapActionPermissions.put("startOtherActivity", "");
mapActionPermissions.put("triggerUrl", "android.permission.INTERNET");
mapActionPermissions.put("triggerUrl", Manifest.permission.INTERNET);
// Hier müßte ein Hinweis kommen, daß nur die Variablen verwendet werden können, für die es Rechte gibt.
mapActionPermissions.put("turnBluetoothOff", "android.permission.BLUETOOTH_ADMIN");
mapActionPermissions.put("turnBluetoothOff", "android.permission.BLUETOOTH");
mapActionPermissions.put("turnBluetoothOff", "android.permission.ACCESS_NETWORK_STATE");
mapActionPermissions.put("turnBluetoothOff", writeSystemSettingsPermissionName);
mapActionPermissions.put("turnBluetoothOn", "android.permission.BLUETOOTH_ADMIN");
mapActionPermissions.put("turnBluetoothOn", "android.permission.BLUETOOTH");
mapActionPermissions.put("turnBluetoothOn", "android.permission.ACCESS_NETWORK_STATE");
mapActionPermissions.put("turnBluetoothOn", writeSystemSettingsPermissionName);
mapActionPermissions.put("turnUsbTetheringOff", writeSystemSettingsPermissionName);
mapActionPermissions.put("turnUsbTetheringOff", "android.permission.CHANGE_NETWORK_STATE");
mapActionPermissions.put("turnUsbTetheringOn", writeSystemSettingsPermissionName);
mapActionPermissions.put("turnUsbTetheringOn", "android.permission.CHANGE_NETWORK_STATE");
mapActionPermissions.put("turnWifiOff", writeSystemSettingsPermissionName);
mapActionPermissions.put("turnWifiOff", "android.permission.CHANGE_NETWORK_STATE");
mapActionPermissions.put("turnWifiOff", "