summaryrefslogtreecommitdiffstats
path: root/src/com/android/packageinstaller/permission/ui/ManagePermissionsFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/packageinstaller/permission/ui/ManagePermissionsFragment.java')
-rw-r--r--src/com/android/packageinstaller/permission/ui/ManagePermissionsFragment.java129
1 files changed, 64 insertions, 65 deletions
diff --git a/src/com/android/packageinstaller/permission/ui/ManagePermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/ManagePermissionsFragment.java
index 00d30d19..051676a8 100644
--- a/src/com/android/packageinstaller/permission/ui/ManagePermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/ManagePermissionsFragment.java
@@ -17,26 +17,23 @@ package com.android.packageinstaller.permission.ui;
import android.annotation.Nullable;
import android.app.ActionBar;
-import android.app.Activity;
import android.app.FragmentTransaction;
import android.content.ActivityNotFoundException;
+import android.content.Context;
import android.content.Intent;
+import android.content.res.Configuration;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
-import android.preference.Preference;
-import android.preference.Preference.OnPreferenceClickListener;
-import android.preference.PreferenceFragment;
-import android.preference.PreferenceScreen;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.Preference.OnPreferenceClickListener;
+import android.support.v7.preference.PreferenceScreen;
import android.util.ArraySet;
import android.util.Log;
-import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
-import android.view.ViewGroup;
import android.widget.ImageView;
-import android.widget.ListView;
import android.widget.TextView;
import com.android.packageinstaller.R;
@@ -48,7 +45,7 @@ import com.android.packageinstaller.permission.utils.Utils;
import java.util.List;
-public final class ManagePermissionsFragment extends PreferenceFragment
+public final class ManagePermissionsFragment extends PermissionsFrameFragment
implements PermissionGroups.PermissionsGroupsChangeCallback, OnPreferenceClickListener {
private static final String LOG_TAG = "ManagePermissionsFragment";
@@ -71,6 +68,7 @@ public final class ManagePermissionsFragment extends PreferenceFragment
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
+ setLoading(true, false);
setHasOptionsMenu(true);
final ActionBar ab = getActivity().getActionBar();
if (ab != null) {
@@ -146,68 +144,55 @@ public final class ManagePermissionsFragment extends PreferenceFragment
}
@Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.permissions_frame, container,
- false);
- ViewGroup prefsContainer = (ViewGroup) rootView.findViewById(R.id.prefs_container);
- if (prefsContainer == null) {
- prefsContainer = rootView;
- }
- prefsContainer.addView(super.onCreateView(inflater, prefsContainer, savedInstanceState));
- View emptyView = rootView.findViewById(R.id.no_permissions);
- ((ListView) rootView.findViewById(android.R.id.list)).setEmptyView(emptyView);
- return rootView;
- }
-
- @Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
- updatePermissionsUi();
+ bindPermissionUi(getActivity(), getView());
}
- private void updatePermissionsUi() {
- Activity activity = getActivity();
-
- if (activity == null) {
+ private static void bindPermissionUi(@Nullable Context context, @Nullable View rootView) {
+ if (context == null || rootView == null) {
return;
}
- final ViewGroup rootView = (ViewGroup) getView();
- if (rootView != null) {
- final ImageView iconView = (ImageView) rootView.findViewById(R.id.lb_icon);
- if (iconView != null) {
- // Set the icon as the background instead of the image because ImageView
- // doesn't properly scale vector drawables beyond their intrinsic size
- Drawable icon = activity.getDrawable(R.drawable.ic_lock);
- icon.setTint(activity.getColor(R.color.off_white));
- iconView.setBackground(icon);
- }
- final TextView titleView = (TextView) rootView.findViewById(R.id.lb_title);
- if (titleView != null) {
- titleView.setText(R.string.app_permissions);
- }
- final TextView breadcrumbView = (TextView) rootView.findViewById(R.id.lb_breadcrumb);
- if (breadcrumbView != null) {
- breadcrumbView.setText(R.string.app_permissions_breadcrumb);
- }
+ ImageView iconView = (ImageView) rootView.findViewById(R.id.lb_icon);
+ if (iconView != null) {
+ // Set the icon as the background instead of the image because ImageView
+ // doesn't properly scale vector drawables beyond their intrinsic size
+ Drawable icon = context.getDrawable(R.drawable.ic_lock);
+ icon.setTint(context.getColor(R.color.off_white));
+ iconView.setBackground(icon);
+ }
+ TextView titleView = (TextView) rootView.findViewById(R.id.lb_title);
+ if (titleView != null) {
+ titleView.setText(R.string.app_permissions);
}
+ TextView breadcrumbView = (TextView) rootView.findViewById(R.id.lb_breadcrumb);
+ if (breadcrumbView != null) {
+ breadcrumbView.setText(R.string.app_permissions_breadcrumb);
+ }
+ }
- List<PermissionGroup> groups = mPermissions.getGroups();
+ private void updatePermissionsUi() {
+ Context context = getPreferenceManager().getContext();
+ if (context == null) {
+ return;
+ }
+ List<PermissionGroup> groups = mPermissions.getGroups();
PreferenceScreen screen = getPreferenceScreen();
- if (screen == null) {
- screen = getPreferenceManager().createPreferenceScreen(activity);
- setPreferenceScreen(screen);
- }
+ int uiModeType = getResources().getConfiguration().uiMode & Configuration.UI_MODE_TYPE_MASK;
+ boolean isTelevision = uiModeType == Configuration.UI_MODE_TYPE_TELEVISION;
// Use this to speed up getting the info for all of the PermissionApps below.
// Create a new one for each refresh to make sure it has fresh data.
PmCache cache = new PmCache(getContext().getPackageManager());
for (PermissionGroup group : groups) {
- // Show legacy permissions only if the user chose that.
- if (!mShowLegacyPermissions && group.getDeclaringPackage().equals(OS_PKG)
- && !Utils.isModernPermissionGroup(group.getName())) {
+ boolean isModernGroup = Utils.isModernPermissionGroup(group.getName());
+ boolean isSystemPermission = group.getDeclaringPackage().equals(OS_PKG);
+
+ // Show legacy permissions only if the user chose that, except
+ // on TV, where they get grouped into the extra screen.
+ if (!mShowLegacyPermissions && !isTelevision && isSystemPermission && !isModernGroup) {
continue;
}
@@ -216,20 +201,20 @@ public final class ManagePermissionsFragment extends PreferenceFragment
preference = mExtraScreen.findPreference(group.getName());
}
if (preference == null) {
- preference = new Preference(activity, null);
+ preference = new Preference(context);
preference.setOnPreferenceClickListener(this);
preference.setKey(group.getName());
- preference.setIcon(Utils.applyTint(activity, group.getIcon(),
+ preference.setIcon(Utils.applyTint(context, group.getIcon(),
android.R.attr.colorControlNormal));
preference.setTitle(group.getLabel());
// Set blank summary so that no resizing/jumping happens when the summary is loaded.
preference.setSummary(" ");
preference.setPersistent(false);
- if (group.getDeclaringPackage().equals(OS_PKG)) {
+ if (isSystemPermission && (isModernGroup || !isTelevision)) {
screen.addPreference(preference);
} else {
if (mExtraScreen == null) {
- mExtraScreen = getPreferenceManager().createPreferenceScreen(activity);
+ mExtraScreen = getPreferenceManager().createPreferenceScreen(context);
}
mExtraScreen.addPreference(preference);
}
@@ -252,9 +237,10 @@ public final class ManagePermissionsFragment extends PreferenceFragment
if (mExtraScreen != null && mExtraScreen.getPreferenceCount() > 0
&& screen.findPreference(EXTRA_PREFS_KEY) == null) {
- Preference extraScreenPreference = new Preference(activity);
+ Preference extraScreenPreference = new Preference(context);
extraScreenPreference.setKey(EXTRA_PREFS_KEY);
- extraScreenPreference.setIcon(R.drawable.ic_toc);
+ extraScreenPreference.setIcon(Utils.applyTint(context, R.drawable.ic_toc,
+ android.R.attr.colorControlNormal));
extraScreenPreference.setTitle(R.string.additional_permissions);
extraScreenPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
@@ -268,18 +254,21 @@ public final class ManagePermissionsFragment extends PreferenceFragment
return true;
}
});
- extraScreenPreference.setSummary(getString(R.string.additional_permissions_more,
- mExtraScreen.getPreferenceCount()));
+ int count = mExtraScreen.getPreferenceCount();
+ extraScreenPreference.setSummary(getResources().getQuantityString(
+ R.plurals.additional_permissions_more, count, count));
screen.addPreference(extraScreenPreference);
}
+ if (screen.getPreferenceCount() != 0) {
+ setLoading(false, true);
+ }
}
- public static class AdditionalPermissionsFragment extends PreferenceFragment {
+ public static class AdditionalPermissionsFragment extends PermissionsFrameFragment {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
getActivity().setTitle(R.string.additional_permissions);
- setPreferenceScreen(((ManagePermissionsFragment) getTargetFragment()).mExtraScreen);
setHasOptionsMenu(true);
}
@@ -299,5 +288,15 @@ public final class ManagePermissionsFragment extends PreferenceFragment
return super.onOptionsItemSelected(item);
}
+ @Override
+ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ bindPermissionUi(getActivity(), getView());
+ }
+
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ setPreferenceScreen(((ManagePermissionsFragment) getTargetFragment()).mExtraScreen);
+ }
}
}