diff --git a/daemon/src/main/kotlin/org/matrix/vector/daemon/ipc/ManagerService.kt b/daemon/src/main/kotlin/org/matrix/vector/daemon/ipc/ManagerService.kt index 412165747..94b38bf3b 100644 --- a/daemon/src/main/kotlin/org/matrix/vector/daemon/ipc/ManagerService.kt +++ b/daemon/src/main/kotlin/org/matrix/vector/daemon/ipc/ManagerService.kt @@ -52,9 +52,18 @@ object ManagerService : ILSPManagerService.Stub() { class ManagerGuard(private val binder: IBinder, val pid: Int, val uid: Int) : IBinder.DeathRecipient { + // system_server dispatches the 3-argument callback up to Android 16 and the + // 4-argument one from Android 17 on. private val connection = object : android.app.IServiceConnection.Stub() { override fun connected(name: ComponentName?, service: IBinder?, dead: Boolean) {} + + override fun connected( + name: ComponentName?, + service: IBinder?, + session: android.app.IBinderSession?, + dead: Boolean + ) {} } init { diff --git a/hiddenapi/stubs/src/main/java/android/app/IBinderSession.java b/hiddenapi/stubs/src/main/java/android/app/IBinderSession.java new file mode 100644 index 000000000..7a81d5c08 --- /dev/null +++ b/hiddenapi/stubs/src/main/java/android/app/IBinderSession.java @@ -0,0 +1,9 @@ +package android.app; + +import android.os.IInterface; + +/** + * Stub of {@code android.app.IBinderSession}, added in Android 17 (API 37), + * where it appears as a parameter of {@link IServiceConnection#connected}. + */ +public interface IBinderSession extends IInterface {} diff --git a/hiddenapi/stubs/src/main/java/android/app/IServiceConnection.java b/hiddenapi/stubs/src/main/java/android/app/IServiceConnection.java index a531e1bc1..034ec8acc 100644 --- a/hiddenapi/stubs/src/main/java/android/app/IServiceConnection.java +++ b/hiddenapi/stubs/src/main/java/android/app/IServiceConnection.java @@ -6,8 +6,13 @@ import android.os.IInterface; public interface IServiceConnection extends IInterface { + + /** Declared by the framework up to Android 16. */ void connected(ComponentName name, IBinder service, boolean dead); + /** Declared by the framework from Android 17 (API 37) on. */ + void connected(ComponentName name, IBinder service, IBinderSession session, boolean dead); + abstract class Stub extends Binder implements IServiceConnection { public static IServiceConnection asInterface(IBinder obj) {