1+ /*
2+ * SPDX-FileCopyrightText: 2026 microG Project Team
3+ * SPDX-License-Identifier: Apache-2.0
4+ */
5+
6+ package org.microg.gms.common
7+
8+ import android.content.Context
9+ import android.util.Log
10+ import androidx.lifecycle.Lifecycle
11+ import androidx.lifecycle.LifecycleOwner
12+ import androidx.lifecycle.lifecycleScope
13+ import com.google.android.gms.common.ConnectionResult
14+ import com.google.android.gms.common.internal.GetServiceRequest
15+ import com.google.android.gms.common.internal.IGmsCallbacks
16+ import com.google.android.gms.common.internal.service.ICommonCallbacks
17+ import com.google.android.gms.common.internal.service.ICommonService
18+ import org.microg.gms.BaseService
19+ import org.microg.gms.auth.signin.SignInConfigurationService
20+
21+ private const val TAG = " GmsCommonService"
22+
23+ class GmsCommonService : BaseService (TAG , GmsService .COMMON ) {
24+ override fun handleServiceRequest (callback : IGmsCallbacks ? , request : GetServiceRequest , service : GmsService ? ) {
25+ val packageName = PackageUtils .getAndCheckCallingPackage(this , request.packageName) ? : throw IllegalArgumentException (" Missing package name" )
26+ Log .d(TAG , " handleServiceRequest: start: $packageName " )
27+ callback?.onPostInitComplete(ConnectionResult .SUCCESS , GmsCommonServiceImpl (this , packageName, lifecycle).asBinder(), null )
28+ }
29+ }
30+
31+ class GmsCommonServiceImpl (val context : Context , val packageName : String , override val lifecycle : Lifecycle ) : ICommonService.Stub(), LifecycleOwner {
32+ override fun clearDefaultAccount (callbacks : ICommonCallbacks ? ) {
33+ Log .d(TAG , " clearDefaultAccount: packageName: $packageName " )
34+ lifecycleScope.launchWhenStarted {
35+ AccountUtils .get(context).removeSelectedAccount(packageName)
36+ SignInConfigurationService .setAuthInfo(context, packageName, null , null )
37+ runCatching { callbacks?.onClearDefaultAccountResult(0 ) }
38+ }
39+ }
40+ }
0 commit comments