From 2455033d3044e8a7d3b706e12d98d249613e578e Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Tue, 17 Feb 2026 08:29:10 +0100 Subject: [PATCH] feat: introduce CredentialProviderService minimal implementation This allows 3rd party applications that are clearing credentials state at start to run properly. The user would still have to select the microG credential provider manually in his Account preferences. To make microG credential provider be automatically selected on a specific OS, the config_enabledCredentialProviderService and config_primaryCredentialProviderService resources can be overlayed. --- .../src/main/AndroidManifest.xml | 18 ++++++ .../credential/CredentialProviderService.kt | 62 +++++++++++++++++++ .../src/main/res/values/strings.xml | 2 + .../res/xml/credential_provider_platform.xml | 8 +++ 4 files changed, 90 insertions(+) create mode 100644 play-services-core/src/main/kotlin/org/microg/gms/credential/CredentialProviderService.kt create mode 100644 play-services-core/src/main/res/xml/credential_provider_platform.xml diff --git a/play-services-core/src/main/AndroidManifest.xml b/play-services-core/src/main/AndroidManifest.xml index 66038da7e2..ecb9aa623d 100644 --- a/play-services-core/src/main/AndroidManifest.xml +++ b/play-services-core/src/main/AndroidManifest.xml @@ -15,6 +15,7 @@ --> + + + + + + + + + + + ) { + Log.d(TAG, "onBeginGetCredential") + callback.onError(GetCredentialException(GetCredentialException.TYPE_NO_CREDENTIAL)) + } + + @RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) + override fun onBeginCreateCredential( + request: BeginCreateCredentialRequest, + cancellationSignal: CancellationSignal, + callback: OutcomeReceiver + ) { + Log.d(TAG, "onBeginCreateCredential") + callback.onError(CreateCredentialException(CreateCredentialException.TYPE_NO_CREATE_OPTIONS)) + } + + override fun onClearCredentialState( + request: ClearCredentialStateRequest, + cancellationSignal: CancellationSignal, + callback: OutcomeReceiver + ) { + Log.d(TAG, "onClearCredentialState") + callback.onResult(null) + } + + companion object { + private const val TAG = "CredentialProvider" + } +} diff --git a/play-services-core/src/main/res/values/strings.xml b/play-services-core/src/main/res/values/strings.xml index c71f247fd3..ee635c5762 100644 --- a/play-services-core/src/main/res/values/strings.xml +++ b/play-services-core/src/main/res/values/strings.xml @@ -456,4 +456,6 @@ Please set up a password, PIN, or pattern lock screen." Turn off Enable Location Sharing People you share your location with can always see:\n·Your name and photo\n·Your device\'s recent location,even when you\'re not using a Google service\n·Your device\'s battery power,and if it\'s charging\n·Your arrival and departure time,if they add a Location Sharing notification + + microG credential provider diff --git a/play-services-core/src/main/res/xml/credential_provider_platform.xml b/play-services-core/src/main/res/xml/credential_provider_platform.xml new file mode 100644 index 0000000000..dcab00d192 --- /dev/null +++ b/play-services-core/src/main/res/xml/credential_provider_platform.xml @@ -0,0 +1,8 @@ + + + + android.credentials.TYPE_PASSWORD_CREDENTIAL + android.credentials.TYPE_PUBLIC_KEY_CREDENTIAL + +