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

Commit 99fd7e49 authored by Chaohui Wang's avatar Chaohui Wang
Browse files

Fix app launch button not shown

This is caused by using getLaunchIntentForPackage() without specific
which user.

Use packageManagerAsUser to fix this issue.

Bug: 236346018
Test: Manual with Settings App
Change-Id: I7d71f9f46b18299245e654c9eef78232cb5e0392
parent 78700601
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ fun AppButtons(packageInfoPresenter: PackageInfoPresenter) {
}

private class AppButtonsHolder(private val packageInfoPresenter: PackageInfoPresenter) {
    private val appLaunchButton = AppLaunchButton(context = packageInfoPresenter.context)
    private val appLaunchButton = AppLaunchButton(packageInfoPresenter)
    private val appDisableButton = AppDisableButton(packageInfoPresenter)
    private val appUninstallButton = AppUninstallButton(packageInfoPresenter)
    private val appForceStopButton = AppForceStopButton(packageInfoPresenter)
+4 −4
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.settings.spa.app.appsettings

import android.content.Context
import android.content.Intent
import android.content.pm.ApplicationInfo
import android.content.pm.PackageInfo
@@ -26,11 +25,12 @@ import com.android.settings.R
import com.android.settingslib.spa.widget.button.ActionButton
import com.android.settingslib.spaprivileged.model.app.userHandle

class AppLaunchButton(private val context: Context) {
    private val packageManager = context.packageManager
class AppLaunchButton(packageInfoPresenter: PackageInfoPresenter) {
    private val context = packageInfoPresenter.context
    private val packageManagerAsUser = packageInfoPresenter.packageManagerAsUser

    fun getActionButton(packageInfo: PackageInfo): ActionButton? =
        packageManager.getLaunchIntentForPackage(packageInfo.packageName)?.let { intent ->
        packageManagerAsUser.getLaunchIntentForPackage(packageInfo.packageName)?.let { intent ->
            launchButton(intent, packageInfo.applicationInfo)
        }

+3 −3
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ class PackageInfoPresenter(
    private val coroutineScope: CoroutineScope,
) {
    private val metricsFeatureProvider = FeatureFactory.getFactory(context).metricsFeatureProvider
    private val packageManager by lazy {
    val packageManagerAsUser: PackageManager by lazy {
        context.createContextAsUser(UserHandle.of(userId), 0).packageManager
    }
    private val _flow: MutableStateFlow<PackageInfo?> = MutableStateFlow(null)
@@ -85,7 +85,7 @@ class PackageInfoPresenter(
    fun enable() {
        logAction(SettingsEnums.ACTION_SETTINGS_ENABLE_APP)
        coroutineScope.launch(Dispatchers.IO) {
            packageManager.setApplicationEnabledSetting(
            packageManagerAsUser.setApplicationEnabledSetting(
                packageName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, 0
            )
            notifyChange()
@@ -96,7 +96,7 @@ class PackageInfoPresenter(
    fun disable() {
        logAction(SettingsEnums.ACTION_SETTINGS_DISABLE_APP)
        coroutineScope.launch(Dispatchers.IO) {
            packageManager.setApplicationEnabledSetting(
            packageManagerAsUser.setApplicationEnabledSetting(
                packageName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER, 0
            )
            notifyChange()