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

Commit 7328d693 authored by Arpan's avatar Arpan Committed by Arpan Kaphle
Browse files

Allows Instant Apps to be read from PkgManager

Prior, we didn't have the flag for instant apps. This adds that flag in
the right QPR Dev branch.

Bug: 299884605
Test: Build test
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:8c43e2b40cc528190e55c55ff2e6f005bc52f536)

Change-Id: I3902958e95c50d74b25fb5bd9a069b92b99d2b07
parent b5cc1567
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 {