summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/MonitoringCertInfoActivity.java
diff options
context:
space:
mode:
authorMaggie Benthall <mbenthall@google.com>2013-09-05 15:33:58 -0400
committerMaggie Benthall <mbenthall@google.com>2013-09-14 15:02:51 -0400
commit9d6c40e56d799427ba30495238b2077cdc3c2115 (patch)
tree9f0603e1bae171016cacc94485be7f294a877853 /src/com/android/settings/MonitoringCertInfoActivity.java
parentb8e39041a5e8994376e44f7b5c5b9cd32a09377e (diff)
downloadpackages_apps_Settings-9d6c40e56d799427ba30495238b2077cdc3c2115.zip
packages_apps_Settings-9d6c40e56d799427ba30495238b2077cdc3c2115.tar.gz
packages_apps_Settings-9d6c40e56d799427ba30495238b2077cdc3c2115.tar.bz2
Activity for messaging installed CA certs, and icon in Settings.
Add the MonitoringCertInfoActivity, used by Settings, QuickSettings and notification to explain about CA certs enabling network traffic monitoring. Add a button on the Security item in Settings when a cert is installed. Bug: 10633199 Change-Id: Ic753fe22b66c30d837a9ba471a0632a07bb7471f
Diffstat (limited to 'src/com/android/settings/MonitoringCertInfoActivity.java')
-rw-r--r--src/com/android/settings/MonitoringCertInfoActivity.java94
1 files changed, 94 insertions, 0 deletions
diff --git a/src/com/android/settings/MonitoringCertInfoActivity.java b/src/com/android/settings/MonitoringCertInfoActivity.java
new file mode 100644
index 0000000..e2ac5d0
--- /dev/null
+++ b/src/com/android/settings/MonitoringCertInfoActivity.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2013 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.settings;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.admin.DevicePolicyManager;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.RemoteException;
+import android.view.WindowManager;
+import android.view.WindowManagerGlobal;
+
+/**
+ * Activity that shows a dialog explaining that a CA cert is allowing someone to monitor network
+ * traffic.
+ */
+public class MonitoringCertInfoActivity extends Activity implements OnClickListener {
+
+ private boolean hasDeviceOwner = false;
+
+ @Override
+ protected void onCreate(Bundle savedStates) {
+ super.onCreate(savedStates);
+
+ DevicePolicyManager dpm =
+ (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
+
+ final AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle(R.string.ssl_ca_cert_dialog_title);
+ builder.setCancelable(true);
+ hasDeviceOwner = dpm.getDeviceOwner() != null;
+ int buttonLabel;
+ if (hasDeviceOwner) {
+ // Institutional case. Show informational message.
+ String message = this.getResources().getString(R.string.ssl_ca_cert_info_message,
+ dpm.getDeviceOwnerName());
+ builder.setMessage(message);
+ buttonLabel = R.string.done_button;
+ } else {
+ // Consumer case. Show scary warning.
+ builder.setIcon(android.R.drawable.stat_notify_error);
+ builder.setMessage(R.string.ssl_ca_cert_warning_message);
+ buttonLabel = R.string.ssl_ca_cert_settings_button;
+ }
+
+ builder.setPositiveButton(buttonLabel, this);
+
+ final Dialog dialog = builder.create();
+ dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
+ try {
+ WindowManagerGlobal.getWindowManagerService().dismissKeyguard();
+ } catch (RemoteException e) {
+ }
+ dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
+ @Override public void onCancel(DialogInterface dialog) {
+ finish();
+ }
+ });
+
+ dialog.show();
+ }
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ if (hasDeviceOwner) {
+ finish();
+ } else {
+ Intent intent =
+ new Intent(android.provider.Settings.ACTION_TRUSTED_CREDENTIALS_USER);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ startActivity(intent);
+ finish();
+ }
+ }
+}