summaryrefslogtreecommitdiffstats
path: root/src/com/android/packageinstaller
diff options
context:
space:
mode:
authorAnthony Hugh <ahugh@google.com>2015-09-21 15:49:08 -0700
committerAnthony Hugh <ahugh@google.com>2015-09-23 14:44:43 -0700
commit4b7427563d334dab50eb77028a78e709ea58880b (patch)
treeeb510c96a9f793c4d7429b72437e379c06c0efb8 /src/com/android/packageinstaller
parentfb9be671c5293642b198c4ef06a94b33ff4ebc0b (diff)
downloadandroid_packages_apps_PackageInstaller-4b7427563d334dab50eb77028a78e709ea58880b.tar.gz
android_packages_apps_PackageInstaller-4b7427563d334dab50eb77028a78e709ea58880b.tar.bz2
android_packages_apps_PackageInstaller-4b7427563d334dab50eb77028a78e709ea58880b.zip
Add new dialog for warning confirmations
This change updates the Wear warning dialog for when users try to change permissions for system apps and apps that are targeting old SDKs. Because Wear does not have a common dialog yet, I needed to create a new activity to hold our confirmation view. Changes: - Update logic to show Wear confirmation screen instead of using AlertDialog - Added WarningConfirmationActivity - Change font size for confirmation dialog - Make ConfirmationViewHandler support hiding one of the 3 vertical buttons - rename grant_permissions.xml to more generic confirmation_dialog BUG: 24132857 Change-Id: Id225e663f0a2cd7b99fb177f780a6a3d0da15214
Diffstat (limited to 'src/com/android/packageinstaller')
-rw-r--r--src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java49
-rw-r--r--src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java16
-rw-r--r--src/com/android/packageinstaller/permission/ui/wear/WarningConfirmationActivity.java110
3 files changed, 151 insertions, 24 deletions
diff --git a/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java b/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java
index 1969c20d..6f1273bb 100644
--- a/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java
+++ b/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java
@@ -18,10 +18,7 @@ package com.android.packageinstaller.permission.ui.wear;
import android.annotation.Nullable;
import android.app.Activity;
-import android.app.AlertDialog;
import android.app.Fragment;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
@@ -51,11 +48,13 @@ public final class AppPermissionsFragmentWear extends TitledSettingsFragment {
private static final String LOG_TAG = "ManagePermsFragment";
+ private static final int WARNING_CONFIRMATION_REQUEST = 252;
private List<AppPermissionGroup> mToggledGroups;
private AppPermissions mAppPermissions;
private PermissionsSettingsAdapter mAdapter;
private boolean mHasConfirmedRevoke;
+ private int mPendingPermGroupIndex = -1;
public static AppPermissionsFragmentWear newInstance(String packageName) {
return setPackageName(new AppPermissionsFragmentWear(), packageName);
@@ -216,23 +215,12 @@ public final class AppPermissionsFragmentWear extends TitledSettingsFragment {
} else {
final boolean grantedByDefault = group.hasGrantedByDefaultPermission();
if (grantedByDefault || (!group.hasRuntimePermission() && !mHasConfirmedRevoke)) {
- new AlertDialog.Builder(getContext())
- .setMessage(grantedByDefault ? R.string.system_warning
- : R.string.old_sdk_deny_warning)
- .setNegativeButton(R.string.cancel, null)
- .setPositiveButton(R.string.grant_dialog_button_deny,
- new OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- group.revokeRuntimePermissions(false);
- if (!grantedByDefault) {
- mHasConfirmedRevoke = true;
- }
-
- updatePermissionGroupSetting(index);
- }
- })
- .show();
+ mPendingPermGroupIndex = index;
+ Intent intent = new Intent(getActivity(), WarningConfirmationActivity.class);
+ intent.putExtra(WarningConfirmationActivity.EXTRA_WARNING_MESSAGE,
+ getString(grantedByDefault ?
+ R.string.system_warning : R.string.old_sdk_deny_warning));
+ startActivityForResult(intent, WARNING_CONFIRMATION_REQUEST);
} else {
group.revokeRuntimePermissions(false);
}
@@ -241,6 +229,27 @@ public final class AppPermissionsFragmentWear extends TitledSettingsFragment {
updatePermissionGroupSetting(index);
}
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (requestCode == WARNING_CONFIRMATION_REQUEST) {
+ if (resultCode == Activity.RESULT_OK) {
+ SettingsAdapter.Setting<AppPermissionGroup> setting =
+ mAdapter.get(mPendingPermGroupIndex);
+ final AppPermissionGroup group = setting.data;
+ group.revokeRuntimePermissions(false);
+ if (!group.hasGrantedByDefaultPermission()) {
+ mHasConfirmedRevoke = true;
+ }
+
+ updatePermissionGroupSetting(mPendingPermGroupIndex);
+ }
+
+ mPendingPermGroupIndex = -1;
+ } else {
+ super.onActivityResult(requestCode, resultCode, data);
+ }
+ }
+
private void updatePermissionGroupSetting(int index) {
SettingsAdapter.Setting<AppPermissionGroup> setting = mAdapter.get(index);
AppPermissionGroup group = setting.data;
diff --git a/src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java b/src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java
index d28866ef..7cfffa00 100644
--- a/src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java
+++ b/src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java
@@ -74,7 +74,7 @@ public abstract class ConfirmationViewHandler implements
}
public View createView() {
- mRoot = LayoutInflater.from(mContext).inflate(R.layout.grant_permissions, null);
+ mRoot = LayoutInflater.from(mContext).inflate(R.layout.confirmation_dialog, null);
mMessage = (TextView) mRoot.findViewById(R.id.message);
mCurrentPageText = (TextView) mRoot.findViewById(R.id.current_page_text);
@@ -141,16 +141,24 @@ public abstract class ConfirmationViewHandler implements
case MODE_VERTICAL_BUTTONS:
mHorizontalButtonBar.setVisibility(View.GONE);
mVerticalButtonBar.setVisibility(View.VISIBLE);
+
mVerticalButton1.setText(getVerticalButton1Text());
mVerticalButton2.setText(getVerticalButton2Text());
- mVerticalButton3.setText(getVerticalButton3Text());
mVerticalButton1.setCompoundDrawablesWithIntrinsicBounds(
getVerticalButton1Icon(), null, null, null);
mVerticalButton2.setCompoundDrawablesWithIntrinsicBounds(
getVerticalButton2Icon(), null, null, null);
- mVerticalButton3.setCompoundDrawablesWithIntrinsicBounds(
- getVerticalButton3Icon(), null, null, null);
+
+ CharSequence verticalButton3Text = getVerticalButton3Text();
+ if (TextUtils.isEmpty(verticalButton3Text)) {
+ mVerticalButton3.setVisibility(View.GONE);
+ } else {
+ mVerticalButton3.setText(getVerticalButton3Text());
+ mVerticalButton3.setCompoundDrawablesWithIntrinsicBounds(
+ getVerticalButton3Icon(), null, null, null);
+ }
+
break;
}
diff --git a/src/com/android/packageinstaller/permission/ui/wear/WarningConfirmationActivity.java b/src/com/android/packageinstaller/permission/ui/wear/WarningConfirmationActivity.java
new file mode 100644
index 00000000..e26dabd6
--- /dev/null
+++ b/src/com/android/packageinstaller/permission/ui/wear/WarningConfirmationActivity.java
@@ -0,0 +1,110 @@
+/*
+* Copyright (C) 2015 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package com.android.packageinstaller.permission.ui.wear;
+
+import android.app.Activity;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.Icon;
+import android.os.Bundle;
+
+import com.android.packageinstaller.R;
+
+public final class WarningConfirmationActivity extends Activity {
+ public final static String EXTRA_WARNING_MESSAGE = "EXTRA_WARNING_MESSAGE";
+
+ private ConfirmationViewHandler mViewHandler;
+ private String mMessage;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ mMessage = getIntent().getStringExtra(EXTRA_WARNING_MESSAGE);
+
+ mViewHandler = new ConfirmationViewHandler(this) {
+ @Override // ConfirmationViewHandler
+ public int getButtonBarMode() {
+ return MODE_VERTICAL_BUTTONS;
+ }
+
+ @Override
+ public void onButton1() {
+ setResult(Activity.RESULT_CANCELED);
+ finish();
+ }
+
+ @Override
+ public void onButton2() {
+ setResult(Activity.RESULT_OK);
+ finish();
+ }
+
+ @Override
+ public void onButton3() {
+ // no-op
+ }
+
+ @Override
+ public CharSequence getVerticalButton1Text() {
+ return getString(R.string.cancel);
+ }
+
+ @Override
+ public CharSequence getVerticalButton2Text() {
+ return getString(R.string.grant_dialog_button_deny);
+ }
+
+ @Override
+ public CharSequence getVerticalButton3Text() {
+ return null;
+ }
+
+ @Override
+ public Drawable getVerticalButton1Icon() {
+ return getDrawable(R.drawable.cancel_button);
+ }
+
+ @Override
+ public Drawable getVerticalButton2Icon() {
+ return getDrawable(R.drawable.confirm_button);
+ }
+
+ @Override
+ public Drawable getVerticalButton3Icon() {
+ return null;
+ }
+
+ @Override
+ public CharSequence getCurrentPageText() {
+ return null;
+ }
+
+ @Override
+ public Icon getPermissionIcon() {
+ return null;
+ }
+
+ @Override
+ public CharSequence getMessage() {
+ return mMessage;
+ }
+ };
+
+ setContentView(mViewHandler.createView());
+ mViewHandler.invalidate();
+ }
+}