diff options
author | Anthony Hugh <ahugh@google.com> | 2015-09-23 22:53:50 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-09-23 22:53:50 +0000 |
commit | 9d51c1e17321029166d22f04bef57140905cbdc4 (patch) | |
tree | 17b781b3660f3e290b658ca01f0312160633140b /src | |
parent | c965cb21917b2dffec7ee5bb47ffa080cb482c1a (diff) | |
parent | 4b7427563d334dab50eb77028a78e709ea58880b (diff) | |
download | android_packages_apps_PackageInstaller-9d51c1e17321029166d22f04bef57140905cbdc4.tar.gz android_packages_apps_PackageInstaller-9d51c1e17321029166d22f04bef57140905cbdc4.tar.bz2 android_packages_apps_PackageInstaller-9d51c1e17321029166d22f04bef57140905cbdc4.zip |
Merge "Add new dialog for warning confirmations" into cw-e-dev
Diffstat (limited to 'src')
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 b1ff52bc..d4ed8327 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(); + } +} |