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
This commit is contained in:
@@ -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)
|
||||
|
@@ -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)
|
||||
}
|
||||
|
||||
|
@@ -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()
|
||||
|
Reference in New Issue
Block a user