/* * Copyright (C) 2018 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.traceur; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; import android.view.LayoutInflater; import android.widget.CheckBox; import java.io.File; import com.android.internal.app.AlertActivity; import com.android.internal.app.AlertController; /** * Dialog that warns about contents of a trace. * Adapted from fw/base/packages/Shell's BugreportWarningActivity. */ public class UserConsentActivityDialog extends AlertActivity implements DialogInterface.OnClickListener { private static final String PREF_KEY_SHOW_DIALOG = "show-dialog"; private static final int PREF_STATE_SHOW = 0; private static final int PREF_STATE_HIDE = 1; private Intent mNextIntent; private CheckBox mDontShowAgain; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); mNextIntent = getIntent().getParcelableExtra(Intent.EXTRA_INTENT); // If the user has previously indicated to never show this dialog again, // go ahead and start the target intent and finish this activity. if (getShowDialogState(this) == PREF_STATE_HIDE) { startActivity(mNextIntent); finish(); } final AlertController.AlertParams params = mAlertParams; params.mView = LayoutInflater.from(this).inflate( R.layout.consent_dialog_checkbox, null); params.mTitle = getString(R.string.share_trace); params.mMessage = getString(R.string.system_trace_sensitive_data); params.mPositiveButtonText = getString(R.string.share); params.mNegativeButtonText = getString(android.R.string.cancel); params.mPositiveButtonListener = this; params.mNegativeButtonListener = this; mDontShowAgain = (CheckBox) params.mView.findViewById(android.R.id.checkbox); setupAlert(); } @Override public void onClick(DialogInterface dialog, int which) { if (which == AlertDialog.BUTTON_POSITIVE) { if (mDontShowAgain.isChecked()) { setShowDialogState(this, PREF_STATE_HIDE); } startActivity(mNextIntent); } finish(); } private int getShowDialogState(Context context) { final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); return prefs.getInt(PREF_KEY_SHOW_DIALOG, PREF_STATE_SHOW); } private void setShowDialogState(Context context, int value) { final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); prefs.edit().putInt(PREF_KEY_SHOW_DIALOG, value).apply(); } }