diff --git a/app/src/fdroidFlavor/AndroidManifest.xml b/app/src/fdroidFlavor/AndroidManifest.xml index f875a0d..ce17837 100644 --- a/app/src/fdroidFlavor/AndroidManifest.xml +++ b/app/src/fdroidFlavor/AndroidManifest.xml @@ -260,6 +260,14 @@ android:exported="true" /> + + diff --git a/app/src/googlePlayFlavor/AndroidManifest.xml b/app/src/googlePlayFlavor/AndroidManifest.xml index 1e5f305..4f6fae2 100644 --- a/app/src/googlePlayFlavor/AndroidManifest.xml +++ b/app/src/googlePlayFlavor/AndroidManifest.xml @@ -253,13 +253,20 @@ android:value="@integer/google_play_services_version" /> - + + \ No newline at end of file diff --git a/app/src/main/java/com/jens/automation2/ActivityPermissions.java b/app/src/main/java/com/jens/automation2/ActivityPermissions.java index 2fc13cc..a3febb7 100644 --- a/app/src/main/java/com/jens/automation2/ActivityPermissions.java +++ b/app/src/main/java/com/jens/automation2/ActivityPermissions.java @@ -39,6 +39,8 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import rikka.shizuku.Shizuku; + public class ActivityPermissions extends Activity { static Map mapGeneralPermissions = null; @@ -58,6 +60,7 @@ public class ActivityPermissions extends Activity private static final int requestCodeForPermissionsManageOverlay = 12050; private static final int requestCodeForPermissionsAccessibility = 12051; private static final int requestCodeForPermissionsScheduleExactAlarms = 12052; + private static final int requestCodeForPermissionsShizuku = 12053; protected String[] specificPermissionsToRequest = null; public static String intentExtraName = "permissionsToBeRequested"; @@ -70,6 +73,7 @@ public class ActivityPermissions extends Activity public final static String permissionNameGoogleActivityDetection = "com.google.android.gms.permission.ACTIVITY_RECOGNITION"; public final static String permissionNameSuperuser = "android.permission.ACCESS_SUPERUSER"; public final static String permissionNameProximity = "android.hardware.sensor.proximity"; + public final static String permissionNameShizuku = "android_permission_shizuku"; public static ActivityPermissions getInstance() { @@ -444,6 +448,8 @@ public class ActivityPermissions extends Activity addToArrayListUnique("android.permission.RECEIVE_BOOT_COMPLETED", requiredPermissions); */ + addToArrayListUnique(permissionNameShizuku, requiredPermissions); + if(!havePermission(Manifest.permission.WRITE_SETTINGS, workingContext)) { for (Profile profile : Profile.getProfileCollection()) @@ -1390,6 +1396,10 @@ public class ActivityPermissions extends Activity Linkify.addLinks((TextView) diaglog.findViewById(android.R.id.message), Linkify.ALL); // return; } + else if(s.equals(permissionNameShizuku)) + { + ShizukuAccess.requestAuthorization(); + } } } @@ -1909,4 +1919,34 @@ public class ActivityPermissions extends Activity // have all setHaveAllPermissions(); } + + public final static class ShizukuAccess + { + private ShizukuAccess() + { + } + + public static boolean isAvailable() + { + return !Shizuku.isPreV11() && Shizuku.pingBinder(); + } + + public static boolean isAuthorized() + { + return isAvailable() && Shizuku.checkSelfPermission() == PackageManager.PERMISSION_GRANTED; + } + + public static void requestAuthorization() + { + if (!isAvailable()) + { + return; + } + + if (Shizuku.checkSelfPermission() != PackageManager.PERMISSION_GRANTED) + { + Shizuku.requestPermission(requestCodeForPermissionsShizuku); + } + } + } } \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 372a40b..f1681ef 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -979,4 +979,5 @@ I do not keep a list of possible settings. Please find those settings on your own. See here for some (incomplete) examples. If any parameter name starts with %1$s while method is POST, it will not be transmitted like the other parameters (with key=value), but transferred as main data. If the parameter ends with %2$s, no encoding will be performed. Target + Shizuku \ No newline at end of file