Update permission summary when permission changing.

Some apps have pre-grant permissions, so when they get disabled and then
enabled again, those pre-granted ones will come back automatically. This
CL handles this kind of cases by listening to permission changes and
update the summary accordingly.

Fixes: 142053555
Test: robotests
Change-Id: I75b010139657ec3b4ff875de77573a46387e42c8
This commit is contained in:
Yi-Ling Chuang
2020-04-01 10:01:15 +08:00
parent 947cb48303
commit f31d38620c
2 changed files with 47 additions and 2 deletions

View File

@@ -19,6 +19,7 @@ package com.android.settings.applications.appinfo;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.icu.text.ListFormatter;
import android.util.Log;
@@ -28,15 +29,24 @@ import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settingslib.applications.PermissionsSummaryHelper;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
import java.util.ArrayList;
import java.util.List;
public class AppPermissionPreferenceController extends AppInfoPreferenceControllerBase {
/**
* A PreferenceController handling the logic for permissions of apps.
*/
public class AppPermissionPreferenceController extends AppInfoPreferenceControllerBase implements
LifecycleObserver, OnStart, OnStop {
private static final String TAG = "PermissionPrefControl";
private static final String EXTRA_HIDE_INFO_BUTTON = "hideInfoButton";
private final PackageManager mPackageManager;
private String mPackageName;
@VisibleForTesting
@@ -73,8 +83,22 @@ public class AppPermissionPreferenceController extends AppInfoPreferenceControll
}
};
private final PackageManager.OnPermissionsChangedListener mOnPermissionsChangedListener =
uid -> updateState(mPreference);
public AppPermissionPreferenceController(Context context, String key) {
super(context, key);
mPackageManager = context.getPackageManager();
}
@Override
public void onStart() {
mPackageManager.addOnPermissionsChangeListener(mOnPermissionsChangedListener);
}
@Override
public void onStop() {
mPackageManager.removeOnPermissionsChangeListener(mOnPermissionsChangedListener);
}
@Override