summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/EipServiceFragment.java
diff options
context:
space:
mode:
authorParménides GV <parmegv@sdf.org>2014-12-15 11:30:28 +0100
committerParménides GV <parmegv@sdf.org>2014-12-15 11:30:28 +0100
commit582758a34f6fd82ad1071bf9a196f0fa048689e8 (patch)
tree4df139d81922e4d3eebd5191996e27ff2c203673 /app/src/main/java/se/leap/bitmaskclient/EipServiceFragment.java
parent97aded26654ede8204a313dd6967b678a72a2a10 (diff)
Working on Android 5.
Beware! https://code.google.com/p/android/issues/detail?id=80074: Wrong VpnService.prepare() behavior after re-installation of the VPN app on Android 5.0 "The following steps will cause incorrect behavior of the VpnService.prepare(): 1. Establish VPN connection using any VPN app. VpnService.prepare() will return an intent for the "Connection request" system activity. Once user accepts it, VPN connection can be established successfully. 2. Uninstall VPN app. 3. Re-install the same VPN app. 4. Now VpnService.prepare() returns null, as if the VPN service has been already prepared. 5. Now VpnService.protect() returns false and VPN connection fails. Device reboot is needed in order to be able to establish VPN connection again."
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/EipServiceFragment.java')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/EipServiceFragment.java21
1 files changed, 6 insertions, 15 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/EipServiceFragment.java b/app/src/main/java/se/leap/bitmaskclient/EipServiceFragment.java
index 904aa31d..acfc967b 100644
--- a/app/src/main/java/se/leap/bitmaskclient/EipServiceFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/EipServiceFragment.java
@@ -139,7 +139,7 @@ public class EipServiceFragment extends Fragment implements Observer {
private boolean canStartEIP() {
boolean certificateExists = !Dashboard.preferences.getString(Constants.CERTIFICATE, "").isEmpty();
boolean isAllowedAnon = Dashboard.preferences.getBoolean(Constants.ALLOWED_ANON, false);
- return (isAllowedAnon || certificateExists) && !eip_status.isConnected();
+ return (isAllowedAnon || certificateExists) && !eip_status.isConnected() && !eip_status.isConnecting();
}
private boolean canLogInToStartEIP() {
@@ -275,19 +275,13 @@ public class EipServiceFragment extends Fragment implements Observer {
adjustSwitch();
}
- protected void setStatusMessage(String status) {
- if(status_message == null)
- status_message = (TextView) parent_activity.findViewById(R.id.status_message);
- status_message.setText(status);
- }
-
private void hideProgressBar() {
if(progress_bar != null)
progress_bar.setVisibility(View.GONE);
}
protected class EIPReceiver extends ResultReceiver {
-
+
protected EIPReceiver(Handler handler){
super(handler);
}
@@ -295,17 +289,14 @@ public class EipServiceFragment extends Fragment implements Observer {
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
super.onReceiveResult(resultCode, resultData);
-
+
String request = resultData.getString(Constants.REQUEST_TAG);
if (request.equals(Constants.ACTION_START_EIP)) {
switch (resultCode){
case Activity.RESULT_OK:
- Log.d(TAG, "Action start eip = Result OK");
- progress_bar.setVisibility(View.VISIBLE);
break;
case Activity.RESULT_CANCELED:
- progress_bar.setVisibility(View.GONE);
break;
}
} else if (request.equals(Constants.ACTION_STOP_EIP)) {
@@ -336,13 +327,13 @@ public class EipServiceFragment extends Fragment implements Observer {
status_message.setText(getString(R.string.updating_certificate_message));
if(LeapSRPSession.getToken().isEmpty() && !Dashboard.preferences.getBoolean(Constants.ALLOWED_ANON, false)) {
dashboard.logInDialog(Bundle.EMPTY);
- } else {
+ } else {
Intent provider_API_command = new Intent(parent_activity, ProviderAPI.class);
if(dashboard.providerAPI_result_receiver == null) {
dashboard.providerAPI_result_receiver = new ProviderAPIResultReceiver(new Handler());
dashboard.providerAPI_result_receiver.setReceiver(dashboard);
}
-
+
provider_API_command.setAction(ProviderAPI.DOWNLOAD_CERTIFICATE);
provider_API_command.putExtra(ProviderAPI.RECEIVER_KEY, dashboard.providerAPI_result_receiver);
parent_activity.startService(provider_API_command);
@@ -352,7 +343,7 @@ public class EipServiceFragment extends Fragment implements Observer {
}
}
}
-
+
public static EIPReceiver getReceiver() {
return mEIPReceiver;