summaryrefslogtreecommitdiffstats
path: root/src/com/android/packageinstaller/permission/ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/packageinstaller/permission/ui')
-rw-r--r--src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java12
-rw-r--r--src/com/android/packageinstaller/permission/ui/GrantPermissionsDefaultViewHandler.java6
-rw-r--r--src/com/android/packageinstaller/permission/ui/GrantPermissionsTvViewHandler.java123
-rw-r--r--src/com/android/packageinstaller/permission/ui/GrantPermissionsViewHandler.java8
4 files changed, 146 insertions, 3 deletions
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
index 7d516b29..630335ed 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
@@ -36,6 +36,8 @@ import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.util.ArrayMap;
import android.util.Log;
+import android.view.Window;
+import android.view.WindowManager;
import com.android.packageinstaller.R;
import com.android.packageinstaller.permission.model.AppPermissionGroup;
@@ -66,8 +68,7 @@ public class GrantPermissionsActivity extends Activity
int uiMode = getResources().getConfiguration().uiMode & UI_MODE_TYPE_MASK;
if (uiMode == UI_MODE_TYPE_TELEVISION) {
- // TODO(tvolkert): Create GrantPermissionsTvViewHandler
- mViewHandler = new GrantPermissionsDefaultViewHandler(this).setResultListener(this);
+ mViewHandler = new GrantPermissionsTvViewHandler(this).setResultListener(this);
} else {
mViewHandler = new GrantPermissionsDefaultViewHandler(this).setResultListener(this);
}
@@ -131,6 +132,11 @@ public class GrantPermissionsActivity extends Activity
setContentView(mViewHandler.createView());
+ Window window = getWindow();
+ WindowManager.LayoutParams layoutParams = window.getAttributes();
+ mViewHandler.updateWindowAttributes(layoutParams);
+ window.setAttributes(layoutParams);
+
if (!showNextPermissionGroupGrantRequest()) {
setResultAndFinish();
}
@@ -159,7 +165,7 @@ public class GrantPermissionsActivity extends Activity
SpannableString message = new SpannableString(getString(
R.string.permission_warning_template, appLabel,
groupState.mGroup.getDescription()));
- // Bold/color the app name.
+ // Color the app name.
int appLabelStart = message.toString().indexOf(appLabel.toString(), 0);
int appLabelLength = appLabel.length();
int color = getColor(R.color.grant_permissions_app_color);
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsDefaultViewHandler.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsDefaultViewHandler.java
index 0d8bd6cd..d755feeb 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsDefaultViewHandler.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsDefaultViewHandler.java
@@ -28,6 +28,7 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLayoutChangeListener;
import android.view.ViewGroup;
+import android.view.WindowManager.LayoutParams;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.widget.Button;
@@ -284,6 +285,11 @@ final class GrantPermissionsDefaultViewHandler
return mRootView;
}
+ @Override
+ public void updateWindowAttributes(LayoutParams outLayoutParams) {
+ // No-op
+ }
+
private void updateDescription() {
mIconView.setImageDrawable(mGroupIcon.loadDrawable(mContext));
mMessageView.setText(mGroupMessage);
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsTvViewHandler.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsTvViewHandler.java
new file mode 100644
index 00000000..244c282f
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsTvViewHandler.java
@@ -0,0 +1,123 @@
+package com.android.packageinstaller.permission.ui;
+
+import android.content.Context;
+import android.graphics.PixelFormat;
+import android.graphics.drawable.Icon;
+import android.os.Bundle;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.android.packageinstaller.R;
+
+/**
+ * TV-specific view handler for the grant permissions activity.
+ */
+final class GrantPermissionsTvViewHandler implements GrantPermissionsViewHandler, OnClickListener {
+
+ private static final String ARG_GROUP_NAME = "ARG_GROUP_NAME";
+
+ private final Context mContext;
+
+ private ResultListener mResultListener;
+
+ private String mGroupName;
+
+ private LinearLayout mRootView;
+ private TextView mMessageView;
+ private ImageView mIconView;
+ private TextView mCurrentGroupView;
+ private Button mAllowButton;
+ private Button mSoftDenyButton;
+ private Button mHardDenyButton;
+
+ GrantPermissionsTvViewHandler(Context context) {
+ mContext = context;
+ }
+
+ @Override
+ public GrantPermissionsTvViewHandler setResultListener(ResultListener listener) {
+ mResultListener = listener;
+ return this;
+ }
+
+ @Override
+ public View createView() {
+ mRootView = (LinearLayout) LayoutInflater.from(mContext)
+ .inflate(R.layout.grant_permissions, null);
+
+ mMessageView = (TextView) mRootView.findViewById(R.id.permission_message);
+ mIconView = (ImageView) mRootView.findViewById(R.id.permission_icon);
+ mCurrentGroupView = (TextView) mRootView.findViewById(R.id.current_page_text);
+ mAllowButton = (Button) mRootView.findViewById(R.id.permission_allow_button);
+ mSoftDenyButton = (Button) mRootView.findViewById(R.id.permission_deny_button);
+ mHardDenyButton = (Button) mRootView.findViewById(
+ R.id.permission_deny_dont_ask_again_button);
+
+ mAllowButton.setOnClickListener(this);
+ mSoftDenyButton.setOnClickListener(this);
+ mHardDenyButton.setOnClickListener(this);
+
+ return mRootView;
+ }
+
+ @Override
+ public void updateWindowAttributes(WindowManager.LayoutParams outLayoutParams) {
+ outLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
+ outLayoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
+ outLayoutParams.format = PixelFormat.OPAQUE;
+ outLayoutParams.gravity = Gravity.BOTTOM;
+ outLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG;
+ outLayoutParams.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
+ }
+
+ @Override
+ public void updateUi(String groupName, int groupCount, int groupIndex, Icon icon,
+ CharSequence message, boolean showDoNotAsk) {
+ mGroupName = groupName;
+
+ mMessageView.setText(message);
+ mIconView.setImageIcon(icon);
+ mHardDenyButton.setVisibility(showDoNotAsk ? View.VISIBLE : View.GONE);
+ if (groupCount > 1) {
+ mCurrentGroupView.setVisibility(View.VISIBLE);
+ mCurrentGroupView.setText(mContext.getString(R.string.current_permission_template,
+ groupIndex + 1, groupCount));
+ } else {
+ mCurrentGroupView.setVisibility(View.INVISIBLE);
+ }
+ }
+
+ @Override
+ public void saveInstanceState(Bundle outState) {
+ outState.putString(ARG_GROUP_NAME, mGroupName);
+ }
+
+ @Override
+ public void loadInstanceState(Bundle savedInstanceState) {
+ mGroupName = savedInstanceState.getString(ARG_GROUP_NAME);
+ }
+
+ @Override
+ public void onClick(View view) {
+ boolean granted = false;
+ boolean doNotAskAgain = false;
+ switch (view.getId()) {
+ case R.id.permission_allow_button:
+ granted = true;
+ break;
+ case R.id.permission_deny_dont_ask_again_button:
+ doNotAskAgain = true;
+ break;
+ }
+ if (mResultListener != null) {
+ mResultListener.onPermissionGrantResult(mGroupName, granted, doNotAskAgain);
+ }
+ }
+}
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsViewHandler.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsViewHandler.java
index 36ba4e4f..118a6773 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsViewHandler.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsViewHandler.java
@@ -19,6 +19,7 @@ package com.android.packageinstaller.permission.ui;
import android.graphics.drawable.Icon;
import android.os.Bundle;
import android.view.View;
+import android.view.WindowManager;
/**
* Class for managing the presentation and user interaction of the "grant
@@ -41,6 +42,13 @@ interface GrantPermissionsViewHandler {
View createView();
/**
+ * Updates the layout attributes of the current window. This is an optional
+ * operation; implementations only need to do work in this method if they
+ * need to alter the default styles provided by the activity's theme.
+ */
+ void updateWindowAttributes(WindowManager.LayoutParams outLayoutParams);
+
+ /**
* Updates the view hierarchy to reflect the specified state.
* <p>
* Note that this must be called at least once before showing the UI to