diff options
Diffstat (limited to 'src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java')
-rw-r--r-- | src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java | 97 |
1 files changed, 64 insertions, 33 deletions
diff --git a/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java index 42a2661c..26467de9 100644 --- a/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/television/AppPermissionsFragment.java @@ -16,7 +16,6 @@ package com.android.packageinstaller.permission.ui.television; -import android.annotation.Nullable; import android.app.ActionBar; import android.app.Activity; import android.app.AlertDialog; @@ -28,6 +27,7 @@ import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.graphics.Color; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; @@ -37,20 +37,22 @@ import android.support.v7.preference.Preference; import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.support.v7.preference.Preference.OnPreferenceClickListener; import android.support.v7.preference.PreferenceScreen; +import android.support.v7.preference.PreferenceViewHolder; +import android.support.v7.widget.RecyclerView; import android.util.Log; 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.TextView; import android.widget.Toast; import com.android.packageinstaller.R; + import com.android.packageinstaller.permission.model.AppPermissionGroup; import com.android.packageinstaller.permission.model.AppPermissions; -import com.android.packageinstaller.permission.ui.OverlayTouchActivity; +import com.android.packageinstaller.permission.ui.ReviewPermissionsActivity; import com.android.packageinstaller.permission.utils.LocationUtils; import com.android.packageinstaller.permission.utils.SafetyNetLogger; import com.android.packageinstaller.permission.utils.Utils; @@ -103,12 +105,22 @@ public final class AppPermissionsFragment extends SettingsWithHeader return; } + mAppPermissions = new AppPermissions(activity, packageInfo, null, true, new Runnable() { @Override public void run() { getActivity().finish(); } }); + + if (mAppPermissions.isReviewRequired()) { + Intent intent = new Intent(getActivity(), ReviewPermissionsActivity.class); + intent.putExtra(Intent.EXTRA_PACKAGE_NAME, packageName); + startActivity(intent); + getActivity().finish(); + return; + } + loadPreferences(); } @@ -116,6 +128,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader public void onResume() { super.onResume(); mAppPermissions.refresh(); + loadPreferences(); setPreferencesCheckedState(); } @@ -141,7 +154,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); if (mAppPermissions != null) { bindUi(this, mAppPermissions.getPackageInfo()); @@ -166,26 +179,8 @@ public final class AppPermissionsFragment extends SettingsWithHeader Drawable icon = appInfo.loadIcon(pm); CharSequence label = appInfo.loadLabel(pm); - fragment.setHeader(icon, label, infoIntent); - - ActionBar ab = activity.getActionBar(); - if (ab != null) { - ab.setTitle(R.string.app_permissions); - } - - ViewGroup rootView = (ViewGroup) fragment.getView(); - ImageView iconView = (ImageView) rootView.findViewById(R.id.lb_icon); - if (iconView != null) { - iconView.setImageDrawable(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(label); - } + fragment.setHeader(icon, label, infoIntent, fragment.getString( + R.string.app_permissions_decor_title)); } private void loadPreferences() { @@ -196,9 +191,11 @@ public final class AppPermissionsFragment extends SettingsWithHeader PreferenceScreen screen = getPreferenceScreen(); screen.removeAll(); + screen.addPreference(createHeaderLineTwoPreference(context)); if (mExtraScreen != null) { mExtraScreen.removeAll(); + mExtraScreen = null; } final Preference extraPerms = new Preference(context); @@ -232,6 +229,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader } else { if (mExtraScreen == null) { mExtraScreen = getPreferenceManager().createPreferenceScreen(context); + mExtraScreen.addPreference(createHeaderLineTwoPreference(context)); } mExtraScreen.addPreference(preference); } @@ -260,6 +258,30 @@ public final class AppPermissionsFragment extends SettingsWithHeader setLoading(false /* loading */, true /* animate */); } + /** + * Creates a heading below decor_title and above the rest of the preferences. This heading + * displays the app name and banner icon. It's used in both system and additional permissions + * fragments for each app. The styling used is the same as a leanback preference with a + * customized background color + * @param context The context the preferences created on + * @return The preference header to be inserted as the first preference in the list. + */ + private Preference createHeaderLineTwoPreference(Context context) { + Preference headerLineTwo = new Preference(context) { + @Override + public void onBindViewHolder(PreferenceViewHolder holder) { + super.onBindViewHolder(holder); + holder.itemView.setBackgroundColor( + getResources().getColor(R.color.lb_header_banner_color)); + } + }; + headerLineTwo.setKey(HEADER_PREFERENCE_KEY); + headerLineTwo.setSelectable(false); + headerLineTwo.setTitle(mLabel); + headerLineTwo.setIcon(mIcon); + return headerLineTwo; + } + @Override public boolean onPreferenceChange(final Preference preference, Object newValue) { String groupName = preference.getKey(); @@ -269,12 +291,6 @@ public final class AppPermissionsFragment extends SettingsWithHeader return false; } - OverlayTouchActivity activity = (OverlayTouchActivity) getActivity(); - if (activity.isObscuredTouch()) { - activity.showOverlayDialog(); - return false; - } - addToggledGroup(group); if (LocationUtils.isLocationGroupAndProvider(group.getName(), group.getApp().packageName)) { @@ -290,7 +306,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader .setMessage(grantedByDefault ? R.string.system_warning : R.string.old_sdk_deny_warning) .setNegativeButton(R.string.cancel, null) - .setPositiveButton(R.string.grant_dialog_button_deny, + .setPositiveButton(R.string.grant_dialog_button_deny_anyway, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { @@ -375,7 +391,6 @@ public final class AppPermissionsFragment extends SettingsWithHeader public void onCreate(Bundle savedInstanceState) { mOuterFragment = (AppPermissionsFragment) getTargetFragment(); super.onCreate(savedInstanceState); - setHeader(mOuterFragment.mIcon, mOuterFragment.mLabel, mOuterFragment.mInfoIntent); setHasOptionsMenu(true); } @@ -385,12 +400,28 @@ public final class AppPermissionsFragment extends SettingsWithHeader } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); String packageName = getArguments().getString(Intent.EXTRA_PACKAGE_NAME); bindUi(this, getPackageInfo(getActivity(), packageName)); } + private static void bindUi(SettingsWithHeader fragment, PackageInfo packageInfo) { + Activity activity = fragment.getActivity(); + PackageManager pm = activity.getPackageManager(); + ApplicationInfo appInfo = packageInfo.applicationInfo; + Intent infoIntent = null; + if (!activity.getIntent().getBooleanExtra(EXTRA_HIDE_INFO_BUTTON, false)) { + infoIntent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) + .setData(Uri.fromParts("package", packageInfo.packageName, null)); + } + + Drawable icon = appInfo.loadIcon(pm); + CharSequence label = appInfo.loadLabel(pm); + fragment.setHeader(icon, label, infoIntent, fragment.getString( + R.string.additional_permissions_decor_title)); + } + @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { |