summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Helen Qin <helenqin@google.com> 2023-03-28 23:38:39 +0000
committer Helen Qin <helenqin@google.com> 2023-03-28 23:38:39 +0000
commitf6f64e59f98c28216ab2e3071a0a58455d95417f (patch)
tree077abeb071b962ae20ea6098d253a134430824e6
parent143eb5c5bb2ebf747c2d63fbf872e8674de8501b (diff)
Support the mdoc component name format.
Since the mdoc provider doesn't need to register a CredMan service and can solely rely on the registration api, its component format will be "packagename/packagename". Bug: 274007049 Test: local deployment Change-Id: I3dcf44eb4e6ffd4dca9d8f0a38395abe9bcf2fd0
-rw-r--r--packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt20
1 files changed, 18 insertions, 2 deletions
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt b/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt
index b3d3b6dc66d0..783cf3b47344 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt
@@ -102,7 +102,7 @@ private fun getServiceLabelAndIcon(
).toString()
providerIcon = pkgInfo.applicationInfo.loadIcon(pm)
} catch (e: PackageManager.NameNotFoundException) {
- Log.e(Constants.LOG_TAG, "Provider info not found", e)
+ Log.e(Constants.LOG_TAG, "Provider package info not found", e)
}
} else {
try {
@@ -113,7 +113,23 @@ private fun getServiceLabelAndIcon(
).toString()
providerIcon = si.loadIcon(pm)
} catch (e: PackageManager.NameNotFoundException) {
- Log.e(Constants.LOG_TAG, "Provider info not found", e)
+ Log.e(Constants.LOG_TAG, "Provider service info not found", e)
+ // Added for mdoc use case where the provider may not need to register a service and
+ // instead only relies on the registration api.
+ try {
+ val pkgInfo = pm.getPackageInfo(
+ component.packageName,
+ PackageManager.PackageInfoFlags.of(0)
+ )
+ providerLabel =
+ pkgInfo.applicationInfo.loadSafeLabel(
+ pm, 0f,
+ TextUtils.SAFE_STRING_FLAG_FIRST_LINE or TextUtils.SAFE_STRING_FLAG_TRIM
+ ).toString()
+ providerIcon = pkgInfo.applicationInfo.loadIcon(pm)
+ } catch (e: PackageManager.NameNotFoundException) {
+ Log.e(Constants.LOG_TAG, "Provider package info not found", e)
+ }
}
}
return if (providerLabel == null || providerIcon == null) {