1bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov/* 2bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov * Copyright (C) 2015 The Android Open Source Project 3bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov * 4bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov * Licensed under the Apache License, Version 2.0 (the "License"); 5bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov * you may not use this file except in compliance with the License. 6bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov * You may obtain a copy of the License at 7bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov * 8bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov * http://www.apache.org/licenses/LICENSE-2.0 9bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov * 10bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov * Unless required by applicable law or agreed to in writing, software 11bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov * distributed under the License is distributed on an "AS IS" BASIS, 12bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov * See the License for the specific language governing permissions and 14bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov * limitations under the License. 15bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov */ 16bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov 17bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganovpackage com.android.packageinstaller.permission.ui; 18bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov 19bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganovimport android.app.Activity; 20bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganovimport android.app.AlertDialog; 21bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganovimport android.app.Dialog; 22bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganovimport android.app.DialogFragment; 23bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganovimport android.content.DialogInterface; 24bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganovimport android.os.Bundle; 25bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganovimport com.android.packageinstaller.R; 26bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov 27bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganovpublic final class ConfirmActionDialogFragment extends DialogFragment { 28bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov public static final String ARG_MESSAGE = "MESSAGE"; 29bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov public static final String ARG_ACTION = "ACTION"; 30bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov 31bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov public static interface OnActionConfirmedListener { 32bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov public void onActionConfirmed(String action); 33bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov } 34bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov 35bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov public static ConfirmActionDialogFragment newInstance(CharSequence message, String action) { 36bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov Bundle arguments = new Bundle(); 37bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov arguments.putCharSequence(ARG_MESSAGE, message); 38bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov arguments.putString(ARG_ACTION, action); 39bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov ConfirmActionDialogFragment fragment = new ConfirmActionDialogFragment(); 40bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov fragment.setArguments(arguments); 41bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov return fragment; 42bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov } 43bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov 44bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov @Override 45bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov public Dialog onCreateDialog(Bundle bundle) { 46bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov return new AlertDialog.Builder(getContext()) 47bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov .setMessage(getArguments().getString(ARG_MESSAGE)) 48bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov .setNegativeButton(R.string.cancel, null) 493f07e6589d0f036df10d97f676a375b2ce04ae3bSvet Ganov .setPositiveButton(R.string.grant_dialog_button_deny_anyway, 50bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov new DialogInterface.OnClickListener() { 51bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov @Override 52bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov public void onClick(DialogInterface dialog, int which) { 53bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov Activity activity = getActivity(); 54bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov if (activity instanceof OnActionConfirmedListener) { 55bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov String groupName = getArguments().getString(ARG_ACTION); 56bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov ((OnActionConfirmedListener) activity) 57bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov .onActionConfirmed(groupName); 58bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov } 59bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov } 60bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov }) 61bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov .create(); 62bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov } 63bf7316751f0c73b435b693fd20b0c9b2fa973e85Svet Ganov} 64