Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0cae5f29 authored by Arpan Kaphle's avatar Arpan Kaphle Committed by Android (Google) Code Review
Browse files

Merge "Allows Instant Apps to be read from PkgManager" into main

parents f283038d 7328d693
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
    <uses-permission android:name="android.permission.LAUNCH_CREDENTIAL_SELECTOR"/>
    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
    <uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS"/>
    <uses-permission android:name="android.permission.ACCESS_INSTANT_APPS" />

    <application
        android:allowBackup="true"
+17 −9
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.credentialmanager
import android.app.slice.Slice
import android.content.ComponentName
import android.content.Context
import android.content.pm.PackageInfo
import android.content.pm.PackageManager
import android.credentials.Credential.TYPE_PASSWORD_CREDENTIAL
import android.credentials.ui.AuthenticationEntry
@@ -67,7 +68,7 @@ fun getAppLabel(
    appPackageName: String
): String? {
    return try {
        val pkgInfo = pm.getPackageInfo(appPackageName, PackageManager.PackageInfoFlags.of(0))
        val pkgInfo = getPackageInfo(pm, appPackageName)
        val applicationInfo = checkNotNull(pkgInfo.applicationInfo)
        applicationInfo.loadSafeLabel(
            pm, 0f,
@@ -90,10 +91,7 @@ private fun getServiceLabelAndIcon(
        // Test data has only package name not component name.
        // For test data usage only.
        try {
            val pkgInfo = pm.getPackageInfo(
                providerFlattenedComponentName,
                PackageManager.PackageInfoFlags.of(0)
            )
            val pkgInfo = getPackageInfo(pm, providerFlattenedComponentName)
            val applicationInfo = checkNotNull(pkgInfo.applicationInfo)
            providerLabel =
                applicationInfo.loadSafeLabel(
@@ -117,10 +115,7 @@ private fun getServiceLabelAndIcon(
            // 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)
                )
                val pkgInfo = getPackageInfo(pm, providerFlattenedComponentName)
                val applicationInfo = checkNotNull(pkgInfo.applicationInfo)
                providerLabel =
                    applicationInfo.loadSafeLabel(
@@ -144,6 +139,19 @@ private fun getServiceLabelAndIcon(
    }
}

private fun getPackageInfo(
    pm: PackageManager,
    packageName: String
): PackageInfo {
    val flags = PackageManager.MATCH_INSTANT

    return pm.getPackageInfo(
       packageName,
       PackageManager.PackageInfoFlags.of(
               (flags).toLong())
    )
}

/** Utility functions for converting CredentialManager data structures to or from UI formats. */
class GetFlowUtils {
    companion object {