From a2205b373a874dad7ddbfa0f59eb3dfee3709d93 Mon Sep 17 00:00:00 2001 From: Tim Schneeberger Date: Sat, 16 Dec 2023 14:49:13 +0100 Subject: [PATCH] fix: fixed crash on Android 14 in Shizuku setup --- .../hiddenapi_impl/ShizukuSystemServerApi.java | 11 ++++++++++- .../java/android/permission/IPermissionManager.java | 6 ++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/hidden-api-impl/src/main/java/me/timschneeberger/hiddenapi_impl/ShizukuSystemServerApi.java b/hidden-api-impl/src/main/java/me/timschneeberger/hiddenapi_impl/ShizukuSystemServerApi.java index 7b5cb5365..dd9b9eb40 100644 --- a/hidden-api-impl/src/main/java/me/timschneeberger/hiddenapi_impl/ShizukuSystemServerApi.java +++ b/hidden-api-impl/src/main/java/me/timschneeberger/hiddenapi_impl/ShizukuSystemServerApi.java @@ -3,6 +3,7 @@ import android.app.AppOpsManager; import android.app.AppOpsManagerHidden; import android.media.IAudioPolicyService; +import android.os.Build; import android.os.IBinder; import android.permission.IPermissionManager; import android.os.RemoteException; @@ -46,7 +47,15 @@ protected IAudioPolicyService create() { public static void PermissionManager_grantRuntimePermission(String packageName, String permissionName, int userId) { try { - PERMISSION_MANAGER.getOrThrow().grantRuntimePermission(packageName, permissionName, userId); + if (Build.VERSION.SDK_INT >= 34) { + try { + PERMISSION_MANAGER.getOrThrow().grantRuntimePermission(packageName, permissionName, 0, userId); + }catch (NoSuchMethodError e) { + PERMISSION_MANAGER.getOrThrow().grantRuntimePermission(packageName, permissionName, userId); + } + } else { + PERMISSION_MANAGER.getOrThrow().grantRuntimePermission(packageName, permissionName, userId); + } } catch(Exception ex) { Log.e("ShizukuSystemServerApi", "Failed to call app ops service"); diff --git a/hidden-api-stubs/src/main/java/android/permission/IPermissionManager.java b/hidden-api-stubs/src/main/java/android/permission/IPermissionManager.java index 6d93d7f04..681bf87d3 100644 --- a/hidden-api-stubs/src/main/java/android/permission/IPermissionManager.java +++ b/hidden-api-stubs/src/main/java/android/permission/IPermissionManager.java @@ -9,9 +9,15 @@ public interface IPermissionManager extends IInterface { void grantRuntimePermission(String packageName, String permissionName, int userId) throws RemoteException; + void grantRuntimePermission(String packageName, String permissionName, int deviceId, int userId) + throws RemoteException; + void revokeRuntimePermission(String packageName, String permissionName, int userId, String reason) throws RemoteException; + void revokeRuntimePermission(String packageName, String permissionName, int deviceId, int userId, String reason) + throws RemoteException; + abstract class Stub extends Binder implements IPermissionManager { public static IPermissionManager asInterface(IBinder obj) {