Merge remote-tracking branch 'origin/fp/fp2_5.1_int'

Change-Id: I73c220acaa16db317f36fedd2e276e2f918266d2
diff --git a/res/drawable-xxhdpi/ic_import_export_fpblue_24dp.png b/res/drawable-xxhdpi/ic_import_export_fpblue_24dp.png
new file mode 100644
index 0000000..7f34bae
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_import_export_fpblue_24dp.png
Binary files differ
diff --git a/res/layout/activity_beta_enabler.xml b/res/layout/activity_beta_enabler.xml
index d646bb8..12c7fe8 100644
--- a/res/layout/activity_beta_enabler.xml
+++ b/res/layout/activity_beta_enabler.xml
@@ -2,16 +2,26 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+	android:background="@color/blue"
     tools:context="com.fairphone.updater.BetaEnabler" >
 
-	<Button
-	    android:id="@+id/beta_activator"
-	    android:layout_width="wrap_content"
-	    android:layout_height="wrap_content"
-	    android:layout_centerHorizontal="true"
-	    android:layout_centerVertical="true"
-	    style="@style/ButtonSmallBlueDark"
-	    android:text="@string/beta_is_enabled" 
-	    android:enabled="false"/>
+	<include layout="@layout/header"/>
+
+	<FrameLayout
+		android:layout_width="wrap_content"
+		android:layout_height="wrap_content"
+		android:layout_centerHorizontal="true"
+		android:layout_centerVertical="true"
+		android:paddingTop="@dimen/header_big_height">
+
+		<Button
+			android:id="@+id/beta_activator"
+			android:layout_width="wrap_content"
+			android:layout_height="wrap_content"
+			style="@style/ButtonWhiteBlue"
+			android:text="@string/beta_is_enabled"
+			android:enabled="false"/>
+
+	</FrameLayout>
 
 </RelativeLayout>
diff --git a/res/layout/header.xml b/res/layout/header.xml
index 20efa42..b6f030f 100644
--- a/res/layout/header.xml
+++ b/res/layout/header.xml
@@ -13,7 +13,7 @@
             android:ellipsize="end"
             android:fontFamily="sans-serif-thin"
             android:gravity="center_vertical|center_horizontal"
-            android:lines="1"
+            android:lines="2"
             android:text="@string/app_full_name"
             android:textColor="@color/blue"
             android:textSize="@dimen/header_big_text_size" />
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 287f907..8c2319b 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -77,5 +77,6 @@
     <string name="got_it">Ich verstehe</string>
     <string name="connect_to_wifi">Stell eine Verbindung zum WLAN her</string>
     <string name="charge_battery">Bitte lade die Batterie mindestens 80% auf</string>
+    <string name="connect_to_internet">Stelle sicher, dass eine Internetverbindung besteht</string>
 
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 949745f..e2997cc 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -77,5 +77,6 @@
     <string name="got_it">Lo entiendo</string>
     <string name="connect_to_wifi">Conéctate a la red Wi-Fi</string>
     <string name="charge_battery">Asegúrate de que tu batería está cargada al menos un 80%</string>
+    <string name="connect_to_internet">Asegúrate de que tienes conexión a internet</string>
 
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 49d173d..0e4c9a4 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -77,5 +77,7 @@
     <string name="got_it">OK</string>
     <string name="connect_to_wifi">Merci de vous connecter à un réseau Wi-Fi</string>
     <string name="charge_battery">Chargez votre batterie à au moins 80%</string>
+    <string name="config_zip" translatable="false"></string>
+    <string name="connect_to_internet">Assurez-vous d\'être connecté à internet</string>
 
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 2d96fbe..e2d8b3e 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -76,6 +76,7 @@
     <string name="app_store">App Stores</string>
     <string name="got_it">Ik snap het</string>
     <string name="connect_to_wifi">Maak verbinding met een Wi-Fi netwerk</string>
-    <string name="charge_battery">Zorg er voor dat je batterij minstens 80% opgeladen is</string>
+    <string name="charge_battery">Zorg ervoor dat je batterij minstens 80% opgeladen is</string>
+    <string name="connect_to_internet">Zorg ervoor dat je bent verbonden met het internet</string>
 
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 5e4b66c..f28df05 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -77,5 +77,6 @@
     <string name="got_it">Entendi</string>
     <string name="connect_to_wifi">Por favor ligue-se a uma rede Wi-Fi</string>
     <string name="charge_battery">Por favor carregue a bateria até pelo menos 80%</string>
+    <string name="connect_to_internet">Certifique-se que está ligado à internet</string>
 
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 7eac390..e343feb 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -27,6 +27,7 @@
     <color name="pink_light">#f286b6</color>
     <color name="pink_light_transparent">#f0dbe4</color>
     <color name="red">#c3474c</color>
+    <color name="design_pink">#d7617f</color>
 
     <!-- GOOGLE COLORS (DEPENDENCIES) -->
     <color name="google_blue">#33b5e5</color>
diff --git a/res/values/config.xml b/res/values/config.xml
index 3ae7fe3..3160eda 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -11,7 +11,7 @@
     <string name="defaultVersionName" translatable="false">Almond</string>
     <string name="defaultBuildNumber" translatable="false">1.0</string>
     <string name="defaultImageType" translatable="false">fairphone</string>
-    <string name="defaultBetaStatus" translatable="false">0</string>
+    <bool name="defaultBetaStatus" translatable="false">false</bool>
     
     <!-- Device Model without spaces separated by semicolon. Ex: FP1;FP1U;FP2 -->
     <string name="knownFPDevices" translatable="false">FP1;FP1U;FP2</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1c15129..a6297e8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -78,4 +78,7 @@
     <string name="connect_to_wifi">Please connect to a Wi-Fi network</string>
     <string name="charge_battery">Please charge your battery to at least 80%</string>
     <string name="got_it">Got it</string>
+    <string name="beta_mode">beta mode</string>
+    <string name="connect_to_internet">Make sure you\'re connected to the internet</string>
+
 </resources>
diff --git a/src/com/fairphone/updater/BetaEnabler.java b/src/com/fairphone/updater/BetaEnabler.java
index 5d64c24..806f60a 100644
--- a/src/com/fairphone/updater/BetaEnabler.java
+++ b/src/com/fairphone/updater/BetaEnabler.java
@@ -2,6 +2,9 @@
 package com.fairphone.updater;
 
 import android.app.Activity;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.Handler;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.Button;
@@ -11,8 +14,7 @@
 
 public class BetaEnabler extends Activity {
 
-    public static final String FAIRPHONE_BETA_PROPERTY = "fairphone.ota.beta";
-    private static final String BETA_DISABLED = "0";
+    public static final String BETA_DISABLED = "0";
     public static final String BETA_ENABLED = "1";
     
     @Override
@@ -28,12 +30,20 @@
             b.setOnClickListener(new OnClickListener() {
                 @Override
                 public void onClick(View v) {
-                    Utils.setBetaPropToEnable();
+                    Utils.enableBeta(getApplicationContext());
                     if (isBetaEnabled()) {
                         Button b = (Button) findViewById(R.id.beta_activator);
                         b.setEnabled(false);
                         b.setText(R.string.beta_is_enabled);
                         b.setOnClickListener(null);
+                        final Handler handler = new Handler();
+                        handler.postDelayed(new Runnable() {
+                            @Override
+                            public void run() {
+                                Utils.restartUpdater(BetaEnabler.this);
+                            }
+                        }, 1000);
+
                     } else {
                         Toast.makeText(getApplicationContext(), R.string.beta_activation_failed, Toast.LENGTH_LONG).show();
                     }
@@ -41,9 +51,10 @@
             });
         }
     }
-    
-    private static boolean isBetaEnabled(){
-        return Utils.getprop(FAIRPHONE_BETA_PROPERTY, BETA_DISABLED).equals(BETA_ENABLED);
+
+    private boolean isBetaEnabled(){
+        SharedPreferences settings = getSharedPreferences(FairphoneUpdater.FAIRPHONE_UPDATER_PREFERENCES, Context.MODE_PRIVATE);
+        return settings.getBoolean(FairphoneUpdater.PREFERENCE_BETA_MODE, getResources().getBoolean(R.bool.defaultBetaStatus));
     }
     
 }
diff --git a/src/com/fairphone/updater/FairphoneUpdater.java b/src/com/fairphone/updater/FairphoneUpdater.java
index e297f33..3a18116 100644
--- a/src/com/fairphone/updater/FairphoneUpdater.java
+++ b/src/com/fairphone/updater/FairphoneUpdater.java
@@ -13,6 +13,7 @@
 import android.support.v4.app.FragmentActivity;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentTransaction;
+import android.text.Html;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
@@ -67,10 +68,12 @@
     public static final String PREFERENCE_SELECTED_STORE_NUMBER = "SelectedStoreNumber";
     
     public static final String PREFERENCE_OTA_DOWNLOAD_URL = "OtaDownloadUrl";
+
+    public static final String PREFERENCE_BETA_MODE = "BetaMode";
     
     private static final String TAG_FIRST_FRAGMENT = "FIRST_FRAGMENT";
     private String mZipPath;
-	private AlertDialog wifiOffDialog;
+    private AlertDialog internetOffDialog;
 
 
 	public static enum UpdaterState
@@ -176,6 +179,8 @@
 
         initHeaderViews();
 
+        setupHeader();
+
         setupFragments(savedInstanceState);
 
         startService();
@@ -185,7 +190,7 @@
     
     void setupBetaStatus()
     {
-        BETA_MODE_ENABLED = mDeviceVersion.getBetaStatus().equals("1");
+        BETA_MODE_ENABLED = mSharedPreferences.getBoolean(PREFERENCE_BETA_MODE, getResources().getBoolean(R.bool.defaultBetaStatus));
     }
 
     private void isDeviceSupported()
@@ -309,6 +314,15 @@
         });
     }
 
+    private void setupHeader() {
+        if(BETA_MODE_ENABLED) {
+            String input = "<br /><small><font color=" + getResources().getColor(R.color.design_pink) + ">" + getResources().getString(R.string.beta_mode) + "</font></small>";
+            headerMainFairphoneText.append(Html.fromHtml(input));
+            headerMainAndroidText.append(Html.fromHtml(input));
+            headerMainAppStoreText.append(Html.fromHtml(input));
+        }
+    }
+
     private void showInfoPopupDialog(DetailLayoutType layoutType)
     {
         FragmentManager fm = getSupportFragmentManager();
@@ -545,6 +559,10 @@
                 {
                     firstFragment = startGappsInstall();  
                 }
+                else if (getTopFragment() != null)
+                {
+                    firstFragment = getTopFragment();
+                }
                 else
                 {
                     firstFragment = new MainFragment();
@@ -817,9 +835,9 @@
 	@Override
 	protected void onPause() {
 		super.onPause();
-		if(wifiOffDialog != null) {
-			wifiOffDialog.cancel();
-			wifiOffDialog = null;
+		if(internetOffDialog != null) {
+            internetOffDialog.cancel();
+            internetOffDialog = null;
 		}
 	}
 
@@ -852,29 +870,29 @@
         
         changeFragment(getFragmentFromState());
 
-	    // Show wifi disable dialog if in a blank state and no wifi is available
-	    if (    wifiOffDialog == null &&
-			    mCurrentState == UpdaterState.NORMAL &&
-			    !Utils.isWiFiEnabled(this) &&
-			    UpdaterData.getInstance().isAppStoreListEmpty() &&
+        // Show internet disable dialog if in a blank state and no internet is available
+        if(     internetOffDialog == null &&
+                mCurrentState == UpdaterState.NORMAL &&
+                !Utils.isInternetEnabled(this) &&
+                UpdaterData.getInstance().isAppStoreListEmpty() &&
 			    !UpdaterData.getInstance().isAOSPVersionListNotEmpty() &&
-			    !UpdaterData.getInstance().isFairphoneVersionListNotEmpty() )
-	    {
-		    Resources resources = getResources();
+			    !UpdaterData.getInstance().isFairphoneVersionListNotEmpty())
+        {
+            Resources resources = getResources();
 
-		    AlertDialog.Builder wifiOffDialogBuilder = new AlertDialog.Builder(this);
+            AlertDialog.Builder internetOffDialogBuilder = new AlertDialog.Builder(this);
 
-		    wifiOffDialogBuilder.setTitle(resources.getString(R.string.connect_to_wifi));
-            wifiOffDialogBuilder.setIcon(resources.getDrawable(R.drawable.ic_signal_wifi_4_bar_fpblue_24dp));
+            internetOffDialogBuilder.setTitle(R.string.connect_to_internet);
+            internetOffDialogBuilder.setIcon(resources.getDrawable(R.drawable.ic_import_export_fpblue_24dp));
 
-		    wifiOffDialogBuilder.setPositiveButton(resources.getString(R.string.got_it), new DialogInterface.OnClickListener() {
+            internetOffDialogBuilder.setPositiveButton(resources.getString(R.string.got_it), new DialogInterface.OnClickListener() {
 			    public void onClick(DialogInterface dialog, int id) {
 				    // do nothing, since the state is still the same
 			    }
 		    });
-		    wifiOffDialog = wifiOffDialogBuilder.create();
-		    wifiOffDialog.show();
-	    }
+            internetOffDialog = internetOffDialogBuilder.create();
+            internetOffDialog.show();
+        }
     }
 
     public Fragment startGappsInstall()
diff --git a/src/com/fairphone/updater/UpdaterService.java b/src/com/fairphone/updater/UpdaterService.java
index eec9184..76f7de6 100644
--- a/src/com/fairphone/updater/UpdaterService.java
+++ b/src/com/fairphone/updater/UpdaterService.java
@@ -107,7 +107,7 @@
 
         setupConnectivityMonitoring();
 
-        if (Utils.isWiFiEnabled(getApplicationContext()))
+        if(Utils.isInternetEnabled(getApplicationContext()))
         {
             downloadConfigFile(intent != null && intent.getBooleanExtra(EXTRA_FORCE_CONFIG_FILE_DOWNLOAD, false));
         }
@@ -246,6 +246,9 @@
 
         if (request != null && mDownloadManager != null)
         {
+            // Allow download over mobile data and Wi-Fi
+            request.setAllowedNetworkTypes(Request.NETWORK_MOBILE|Request.NETWORK_WIFI);
+
             //Guarantee that only we have only one download
             long oldDownloadId = mSharedPreferences.getLong(PREFERENCE_LAST_CONFIG_DOWNLOAD_ID, 0);
             if(oldDownloadId != 0){
@@ -329,7 +332,7 @@
                     sb.append("&b_n=").append(URLEncoder.encode(currentVersion.getBuildNumber(), defaultCharset));
                 }
                 sb.append("&ota_v_n=").append(URLEncoder.encode(String.valueOf(currentVersion.getId()), defaultCharset));
-                sb.append("&beta=").append(URLEncoder.encode(currentVersion.getBetaStatus(), defaultCharset));
+                sb.append("&beta=").append(FairphoneUpdater.BETA_MODE_ENABLED ? BetaEnabler.BETA_ENABLED : BetaEnabler.BETA_DISABLED);
                 sb.append("&dev=").append(FairphoneUpdater.DEV_MODE_ENABLED ? "1" : "0");
             } catch (UnsupportedEncodingException e) {
                 Log.e(TAG, "Failed to add extra info on update request: "+e.getLocalizedMessage());
@@ -403,7 +406,7 @@
 
         if (networkStateReceiver == null) {
             // Check current connectivity status
-            mInternetConnectionAvailable = Utils.isWiFiEnabled(getApplicationContext());
+            mInternetConnectionAvailable = Utils.isInternetEnabled(getApplicationContext());
 
             // Setup monitoring for future connectivity status changes
             networkStateReceiver = new BroadcastReceiver()
@@ -429,7 +432,7 @@
                     else
                     {
                         int conn_type = intent.getIntExtra(ConnectivityManager.EXTRA_NETWORK_TYPE, ConnectivityManager.TYPE_DUMMY);
-                        if( conn_type == ConnectivityManager.TYPE_WIFI ) {
+                        if( conn_type == ConnectivityManager.TYPE_WIFI || conn_type == ConnectivityManager.TYPE_MOBILE) {
                             Log.i(TAG, "Network connectivity potentially available.");
                             if (!mInternetConnectionAvailable) {
                                 downloadConfigFile(false);
diff --git a/src/com/fairphone/updater/data/Version.java b/src/com/fairphone/updater/data/Version.java
index 8f053ae..2a206a0 100644
--- a/src/com/fairphone/updater/data/Version.java
+++ b/src/com/fairphone/updater/data/Version.java
@@ -41,8 +41,6 @@
 
     private String mAndroidVersion;
 
-    private String mBetaStatus;
-
     private boolean mErasePartitionsWarning;
 
     private final List<Integer> mDependencies;
@@ -54,7 +52,6 @@
         mAndroidVersion = "";
         mImageType = IMAGE_TYPE_FAIRPHONE;
         mErasePartitionsWarning = false;
-        mBetaStatus = "";
     }
 
     public Version(Version other)
@@ -64,7 +61,6 @@
         mAndroidVersion = other.mAndroidVersion;
         mImageType = other.mImageType;
         mErasePartitionsWarning = other.hasEraseAllPartitionWarning();
-        mBetaStatus = other.mBetaStatus;
     }
 
     public void setEraseAllPartitionWarning()
@@ -92,16 +88,6 @@
         return mImageType;
     }
 
-    public void setBetaStatus(String betaStatus)
-    {
-        mBetaStatus = betaStatus;
-    }
-
-    public String getBetaStatus()
-    {
-        return mBetaStatus;
-    }
-
     public String getImageTypeDescription(Resources resources)
     {
         return Version.getImageTypeDescription(mImageType, resources);
diff --git a/src/com/fairphone/updater/data/VersionParserHelper.java b/src/com/fairphone/updater/data/VersionParserHelper.java
index 3bf8d1c..4120743 100644
--- a/src/com/fairphone/updater/data/VersionParserHelper.java
+++ b/src/com/fairphone/updater/data/VersionParserHelper.java
@@ -45,7 +45,6 @@
     private static final String CURRENT_VERSION_NUMBER = "fairphone.ota.version.number";
     private static final String CURRENT_VERSION_NAME = "fairphone.ota.version.name";
     private static final String CURRENT_VERSION_BUILD_NUMBER = "fairphone.ota.build_number";
-    private static final String CURRENT_BETA_STATUS = "fairphone.ota.beta";
     private static final String CURRENT_VERSION_IMAGE_TYPE = "fairphone.ota.image_type";
     private static final String CURRENT_VERSION_ID = "ro.build.version.incremental";                // for FP2
 
@@ -88,7 +87,6 @@
             }
 
             versionBuilder.setImageType(getSystemData(context, CURRENT_VERSION_IMAGE_TYPE, knownFPDevice));
-            versionBuilder.setBetaStatus(getSystemData(context, CURRENT_BETA_STATUS, knownFPDevice));
 
             Version versionData = UpdaterData.getInstance().getVersion(versionBuilder.getImageType(), versionBuilder.getId());
             versionBuilder.setThumbnailLink(versionData != null ? versionData.getThumbnailLink() : "");
@@ -115,9 +113,6 @@
 		    case CURRENT_VERSION_IMAGE_TYPE:
 			    result = Utils.getprop(CURRENT_VERSION_IMAGE_TYPE, useDefaults ? context.getResources().getString(R.string.defaultImageType) : "");
 			    break;
-		    case CURRENT_BETA_STATUS:
-			    result = Utils.getprop(CURRENT_BETA_STATUS, useDefaults ? context.getResources().getString(R.string.defaultBetaStatus) : "0");
-			    break;
             case CURRENT_VERSION_ID:
                 result = Utils.getprop(CURRENT_VERSION_ID, useDefaults ? "" : ""); // TODO: define default value for fingerprint
                 break;
diff --git a/src/com/fairphone/updater/tools/Utils.java b/src/com/fairphone/updater/tools/Utils.java
index b42f558..c8b3930 100644
--- a/src/com/fairphone/updater/tools/Utils.java
+++ b/src/com/fairphone/updater/tools/Utils.java
@@ -16,13 +16,18 @@
 
 package com.fairphone.updater.tools;
 
+import android.app.Activity;
+import android.app.AlarmManager;
 import android.app.DownloadManager;
+import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.content.SharedPreferences;
 import android.content.res.Resources;
 import android.database.Cursor;
 import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
 import android.net.Uri;
 import android.os.BatteryManager;
 import android.os.Build;
@@ -32,7 +37,7 @@
 import android.util.Log;
 import android.widget.Toast;
 
-import com.fairphone.updater.BetaEnabler;
+import com.fairphone.updater.FairphoneUpdater;
 import com.fairphone.updater.R;
 import com.fairphone.updater.UpdaterService;
 import com.fairphone.updater.data.DownloadableItem;
@@ -425,22 +430,11 @@
         return result;
     }
 
-	public static void setBetaPropToEnable()
-    {
-        if(RootTools.isAccessGiven()) {
-            CommandCapture command = new CommandCapture(0, "/system/bin/setprop "+ BetaEnabler.FAIRPHONE_BETA_PROPERTY+" "+BetaEnabler.BETA_ENABLED);
-            try {
-                Shell.runRootCommand(command);
-            } catch (IOException | TimeoutException | RootDeniedException e) {
-	            Log.d(TAG, "Failed to setprop: " + e.getLocalizedMessage());
-            }
-        }
-        try {
-            Thread.sleep(200);
-        } catch (InterruptedException e) {
-
-        }
-        buildProps = null;
+    public static void enableBeta(Context context) {
+        SharedPreferences settings = context.getSharedPreferences(FairphoneUpdater.FAIRPHONE_UPDATER_PREFERENCES, Context.MODE_PRIVATE);
+        SharedPreferences.Editor editor = settings.edit();
+        editor.putBoolean(FairphoneUpdater.PREFERENCE_BETA_MODE, true);
+        editor.commit();
     }
 
     public static String getOtaPackagePath(Resources resources, DownloadableItem item, boolean isVersion, boolean isZipInstall){
@@ -656,6 +650,13 @@
         return filePath;
     }
 
+    public static boolean isInternetEnabled(Context context) {
+        ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
+        NetworkInfo activeNetwork = manager.getActiveNetworkInfo();
+        boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
+        return isConnected;
+    }
+
 	public static boolean isWiFiEnabled(Context context)
 	{
 
@@ -682,4 +683,13 @@
     {
         return UpdaterData.getInstance().getStore(GAPPS_STORE_NUMBER);
     }
+
+    public static void restartUpdater(Activity activity) {
+        Intent startActivity = new Intent(activity.getApplicationContext(), FairphoneUpdater.class);
+        int pendingIntentId = 123456;
+        PendingIntent pendingIntent = PendingIntent.getActivity(activity.getApplicationContext(), pendingIntentId, startActivity, PendingIntent.FLAG_CANCEL_CURRENT);
+        AlarmManager mgr = (AlarmManager)activity.getApplicationContext().getSystemService(Context.ALARM_SERVICE);
+        mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, pendingIntent);
+        System.exit(0);
+    }
 }