summaryrefslogtreecommitdiffstats
path: root/packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java
diff options
context:
space:
mode:
Diffstat (limited to 'packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java')
-rw-r--r--packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java46
1 files changed, 27 insertions, 19 deletions
diff --git a/packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java b/packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java
index ddafc66..897c96cf 100644
--- a/packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java
+++ b/packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java
@@ -18,21 +18,28 @@ package com.android.vpndialogs;
import android.content.Context;
import android.content.DialogInterface;
+import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.graphics.drawable.Drawable;
import android.net.IConnectivityManager;
+import android.net.VpnService;
import android.os.ServiceManager;
+import android.text.Html;
+import android.text.Html.ImageGetter;
import android.util.Log;
import android.view.View;
import android.widget.Button;
-import android.widget.CompoundButton;
-import android.widget.ImageView;
import android.widget.TextView;
import com.android.internal.app.AlertActivity;
+import com.android.internal.net.VpnConfig;
-public class ConfirmDialog extends AlertActivity implements
- CompoundButton.OnCheckedChangeListener, DialogInterface.OnClickListener {
+import java.util.List;
+
+public class ConfirmDialog extends AlertActivity
+ implements DialogInterface.OnClickListener, ImageGetter {
private static final String TAG = "VpnConfirm";
private String mPackage;
@@ -56,27 +63,22 @@ public class ConfirmDialog extends AlertActivity implements
return;
}
- PackageManager pm = getPackageManager();
- ApplicationInfo app = pm.getApplicationInfo(mPackage, 0);
-
View view = View.inflate(this, R.layout.confirm, null);
- ((ImageView) view.findViewById(R.id.icon)).setImageDrawable(app.loadIcon(pm));
- ((TextView) view.findViewById(R.id.prompt)).setText(
- getString(R.string.prompt, app.loadLabel(pm)));
- ((CompoundButton) view.findViewById(R.id.check)).setOnCheckedChangeListener(this);
- mAlertParams.mIconAttrId = android.R.attr.alertDialogIcon;
- mAlertParams.mTitle = getText(android.R.string.dialog_alert_title);
+ ((TextView) view.findViewById(R.id.warning)).setText(
+ Html.fromHtml(
+ getString(R.string.warning, VpnConfig.getVpnLabel(this, mPackage)),
+ this, null /* tagHandler */));
+
+ mAlertParams.mTitle = getText(R.string.prompt);
mAlertParams.mPositiveButtonText = getText(android.R.string.ok);
mAlertParams.mPositiveButtonListener = this;
mAlertParams.mNegativeButtonText = getText(android.R.string.cancel);
- mAlertParams.mNegativeButtonListener = this;
mAlertParams.mView = view;
setupAlert();
getWindow().setCloseOnTouchOutside(false);
mButton = mAlert.getButton(DialogInterface.BUTTON_POSITIVE);
- mButton.setEnabled(false);
mButton.setFilterTouchesWhenObscured(true);
} catch (Exception e) {
Log.e(TAG, "onResume", e);
@@ -85,18 +87,24 @@ public class ConfirmDialog extends AlertActivity implements
}
@Override
- public void onBackPressed() {
+ public Drawable getDrawable(String source) {
+ // Should only reach this when fetching the VPN icon for the warning string.
+ Drawable icon = getDrawable(R.drawable.ic_vpn_dialog);
+ icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon.getIntrinsicHeight());
+ return icon;
}
@Override
- public void onCheckedChanged(CompoundButton button, boolean checked) {
- mButton.setEnabled(checked);
+ public void onBackPressed() {
}
@Override
public void onClick(DialogInterface dialog, int which) {
try {
- if (which == DialogInterface.BUTTON_POSITIVE && mService.prepareVpn(null, mPackage)) {
+ if (mService.prepareVpn(null, mPackage)) {
+ // Authorize this app to initiate VPN connections in the future without user
+ // intervention.
+ mService.setVpnPackageAuthorization(true);
setResult(RESULT_OK);
}
} catch (Exception e) {