summaryrefslogtreecommitdiff
path: root/main/src/main/java/de/blinkt/openvpn/api/ConfirmDialog.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/main/java/de/blinkt/openvpn/api/ConfirmDialog.java')
-rw-r--r--main/src/main/java/de/blinkt/openvpn/api/ConfirmDialog.java191
1 files changed, 104 insertions, 87 deletions
diff --git a/main/src/main/java/de/blinkt/openvpn/api/ConfirmDialog.java b/main/src/main/java/de/blinkt/openvpn/api/ConfirmDialog.java
index 4124b7d4..2355f83b 100644
--- a/main/src/main/java/de/blinkt/openvpn/api/ConfirmDialog.java
+++ b/main/src/main/java/de/blinkt/openvpn/api/ConfirmDialog.java
@@ -21,6 +21,7 @@ import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnShowListener;
+import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.util.Log;
@@ -29,97 +30,113 @@ import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.TextView;
+
import de.blinkt.openvpn.R;
public class ConfirmDialog extends Activity implements
-CompoundButton.OnCheckedChangeListener, DialogInterface.OnClickListener {
- private static final String TAG = "OpenVPNVpnConfirm";
-
- private String mPackage;
-
- private Button mButton;
-
- private AlertDialog mAlert;
-
- @Override
- protected void onResume() {
- super.onResume();
- try {
- mPackage = getCallingPackage();
- if (mPackage==null) {
- finish();
- return;
- }
-
-
- PackageManager pm = getPackageManager();
- ApplicationInfo app = pm.getApplicationInfo(mPackage, 0);
-
- View view = View.inflate(this, R.layout.api_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), getString(R.string.app)));
- ((CompoundButton) view.findViewById(R.id.check)).setOnCheckedChangeListener(this);
-
-
- Builder builder = new AlertDialog.Builder(this);
-
- builder.setView(view);
-
- builder.setIconAttribute(android.R.attr.alertDialogIcon);
- builder.setTitle(android.R.string.dialog_alert_title);
- builder.setPositiveButton(android.R.string.ok,this);
- builder.setNegativeButton(android.R.string.cancel,this);
-
- mAlert = builder.create();
- mAlert.setCanceledOnTouchOutside(false);
-
- mAlert.setOnShowListener (new OnShowListener() {
- @Override
- public void onShow(DialogInterface dialog) {
- mButton = mAlert.getButton(DialogInterface.BUTTON_POSITIVE);
- mButton.setEnabled(false);
-
- }
- });
-
- //setCloseOnTouchOutside(false);
-
- mAlert.show();
-
- } catch (Exception e) {
- Log.e(TAG, "onResume", e);
- finish();
- }
- }
-
- @Override
- public void onBackPressed() {
- setResult(RESULT_CANCELED);
- finish();
- }
-
- @Override
- public void onCheckedChanged(CompoundButton button, boolean checked) {
- mButton.setEnabled(checked);
- }
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
-
- if (which == DialogInterface.BUTTON_POSITIVE) {
- ExternalAppDatabase extapps = new ExternalAppDatabase(this);
- extapps.addApp(mPackage);
- setResult(RESULT_OK);
- finish();
- }
-
- if (which == DialogInterface.BUTTON_NEGATIVE) {
- setResult(RESULT_CANCELED);
- finish();
- }
- }
+ CompoundButton.OnCheckedChangeListener, DialogInterface.OnClickListener {
+ private static final String TAG = "OpenVPNVpnConfirm";
+
+ public static final String EXTRA_PACKAGE_NAME = "android.intent.extra.PACKAGE_NAME";
+
+ public static final String ANONYMOUS_PACKAGE = "de.blinkt.openvpn.ANYPACKAGE";
+
+ private String mPackage;
+
+ private Button mButton;
+
+ private AlertDialog mAlert;
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ Intent intent = getIntent();
+ if (intent.getStringExtra(EXTRA_PACKAGE_NAME) != null) {
+ mPackage = intent.getStringExtra(EXTRA_PACKAGE_NAME);
+ } else {
+ mPackage = getCallingPackage();
+ if (mPackage == null) {
+ finish();
+ return;
+ }
+ }
+
+ try {
+ View view = View.inflate(this, R.layout.api_confirm, null);
+ CharSequence appString;
+ if (mPackage.equals(ANONYMOUS_PACKAGE)) {
+ appString = getString(R.string.all_app_prompt, getString(R.string.app));
+ } else {
+ PackageManager pm = getPackageManager();
+ ApplicationInfo app = pm.getApplicationInfo(mPackage, 0);
+ appString = getString(R.string.prompt, app.loadLabel(pm) , getString(R.string.app));
+ ((ImageView) view.findViewById(R.id.icon)).setImageDrawable(app.loadIcon(pm));
+ }
+
+
+ ((TextView) view.findViewById(R.id.prompt)).setText(appString);
+ ((CompoundButton) view.findViewById(R.id.check)).setOnCheckedChangeListener(this);
+
+
+ Builder builder = new AlertDialog.Builder(this);
+
+ builder.setView(view);
+
+ builder.setIconAttribute(android.R.attr.alertDialogIcon);
+ builder.setTitle(android.R.string.dialog_alert_title);
+ builder.setPositiveButton(android.R.string.ok, this);
+ builder.setNegativeButton(android.R.string.cancel, this);
+
+ mAlert = builder.create();
+ mAlert.setCanceledOnTouchOutside(false);
+
+ mAlert.setOnShowListener(new OnShowListener() {
+ @Override
+ public void onShow(DialogInterface dialog) {
+ mButton = mAlert.getButton(DialogInterface.BUTTON_POSITIVE);
+ mButton.setEnabled(false);
+
+ }
+ });
+
+ //setCloseOnTouchOutside(false);
+
+ mAlert.show();
+
+ } catch (Exception e) {
+ Log.e(TAG, "onResume", e);
+ finish();
+ }
+ }
+
+ @Override
+ public void onBackPressed() {
+ setResult(RESULT_CANCELED);
+ finish();
+ }
+
+ @Override
+ public void onCheckedChanged(CompoundButton button, boolean checked) {
+ mButton.setEnabled(checked);
+ }
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+
+ if (which == DialogInterface.BUTTON_POSITIVE) {
+ ExternalAppDatabase extapps = new ExternalAppDatabase(this);
+ extapps.addApp(mPackage);
+ setResult(RESULT_OK);
+ finish();
+ }
+
+ if (which == DialogInterface.BUTTON_NEGATIVE) {
+ setResult(RESULT_CANCELED);
+ finish();
+ }
+ }
}