Add permissions screen to advanced apps

Add a screen that shows a list of permissions and how many apps
have been granted them, link to PackageInstaller for control of
the permissions.

Depends on I68cdbe53177f742daf396f4eb53761fd5cda2636
Change-Id: I183848ea89ea41a17eaf663441dc4ef963be99bf
This commit is contained in:
Jason Monk
2015-03-26 08:30:50 -04:00
parent ec5a3373db
commit 2f41aa7955
5 changed files with 337 additions and 1 deletions

View File

@@ -26,6 +26,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.NetworkPolicyManager;
import android.os.AsyncTask;
@@ -34,9 +35,11 @@ import android.os.Handler;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.os.UserManager;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.util.Log;
import android.util.Pair;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -47,22 +50,25 @@ import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.applications.ApplicationsState.AppEntry;
import com.android.settings.applications.ApplicationsState.Callbacks;
import com.android.settings.applications.ApplicationsState.Session;
import com.android.settings.applications.PermissionsInfo.Callback;
import java.util.ArrayList;
import java.util.List;
public class AdvancedAppSettings extends SettingsPreferenceFragment implements Callbacks,
DialogInterface.OnClickListener, DialogInterface.OnDismissListener {
DialogInterface.OnClickListener, DialogInterface.OnDismissListener, Callback {
static final String TAG = "AdvancedAppSettings";
static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
private static final String KEY_APP_PERM = "manage_perms";
private static final String KEY_ALL_APPS = "all_apps";
private static final String KEY_RESET_ALL = "reset_all";
private static final String EXTRA_RESET_DIALOG = "resetDialog";
private ApplicationsState mApplicationsState;
private Session mSession;
private Preference mAppPerms;
private Preference mAllApps;
private Preference mResetAll;
@@ -75,6 +81,7 @@ public class AdvancedAppSettings extends SettingsPreferenceFragment implements C
private NetworkPolicyManager mNpm;
private AppOpsManager mAom;
private Handler mHandler;
private PermissionsInfo mPermissionsInfo;
@Override
public void onCreate(Bundle icicle) {
@@ -84,6 +91,7 @@ public class AdvancedAppSettings extends SettingsPreferenceFragment implements C
mApplicationsState = ApplicationsState.getInstance(getActivity().getApplication());
mSession = mApplicationsState.newSession(this);
mAppPerms = findPreference(KEY_APP_PERM);
mAllApps = findPreference(KEY_ALL_APPS);
mResetAll = findPreference(KEY_RESET_ALL);
mResetAll.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@@ -136,6 +144,7 @@ public class AdvancedAppSettings extends SettingsPreferenceFragment implements C
public void onResume() {
super.onResume();
mActivityResumed = true;
mPermissionsInfo = new PermissionsInfo(getActivity(), this);
}
@Override
@@ -265,4 +274,11 @@ public class AdvancedAppSettings extends SettingsPreferenceFragment implements C
// No-op.
}
@Override
public void onPermissionLoadComplete() {
mAppPerms.setSummary(getActivity().getString(R.string.app_permissions_summary,
mPermissionsInfo.getRuntimePermAppsGrantedCount(),
mPermissionsInfo.getRuntimePermAppsCount()));
}
}