From 9ef1474cbef4ad5a7e6d7c3fd7d55d36b88ceda8 Mon Sep 17 00:00:00 2001 From: Lode Hoste Date: Wed, 6 May 2015 07:59:09 +0200 Subject: [PATCH] Restart now when importing config (fixes #386) --- .../fragments/SettingsFragment.java | 15 +++++++++++++++ .../syncthingandroid/syncthing/RestApi.java | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/nutomic/syncthingandroid/fragments/SettingsFragment.java b/src/main/java/com/nutomic/syncthingandroid/fragments/SettingsFragment.java index 7ca165f8..ae044799 100644 --- a/src/main/java/com/nutomic/syncthingandroid/fragments/SettingsFragment.java +++ b/src/main/java/com/nutomic/syncthingandroid/fragments/SettingsFragment.java @@ -1,5 +1,9 @@ package com.nutomic.syncthingandroid.fragments; +import android.app.AlarmManager; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.os.Bundle; @@ -16,6 +20,7 @@ import android.view.MenuItem; import android.widget.Toast; import com.nutomic.syncthingandroid.R; +import com.nutomic.syncthingandroid.activities.MainActivity; import com.nutomic.syncthingandroid.activities.SyncthingActivity; import com.nutomic.syncthingandroid.syncthing.RestApi; import com.nutomic.syncthingandroid.syncthing.SyncthingService; @@ -269,6 +274,16 @@ public class SettingsFragment extends PreferenceFragment if (mSyncthingService.importConfig()) { Toast.makeText(getActivity(), getString(R.string.config_imported_successful), Toast.LENGTH_SHORT).show(); + // Restart application because API key changed + // TODO Should be nicer + Intent mStartActivity = new Intent(this.getActivity(), MainActivity.class); + int mPendingIntentId = 838465; + PendingIntent mPendingIntent = PendingIntent.getActivity(this.getActivity(), + mPendingIntentId, + mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT); + AlarmManager mgr = (AlarmManager)this.getActivity().getSystemService(Context.ALARM_SERVICE); + mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent); + System.exit(0); } else { Toast.makeText(getActivity(), getString(R.string.config_import_failed, SyncthingService.EXPORT_PATH), Toast.LENGTH_LONG).show(); diff --git a/src/main/java/com/nutomic/syncthingandroid/syncthing/RestApi.java b/src/main/java/com/nutomic/syncthingandroid/syncthing/RestApi.java index e6d5d321..2f6bbabf 100644 --- a/src/main/java/com/nutomic/syncthingandroid/syncthing/RestApi.java +++ b/src/main/java/com/nutomic/syncthingandroid/syncthing/RestApi.java @@ -339,7 +339,6 @@ public class RestApi implements SyncthingService.OnWebGuiAvailableListener, } return json; } - /** * Sends the updated mConfig via Rest API to syncthing and displays a "restart" * dialog or notification. @@ -347,6 +346,7 @@ public class RestApi implements SyncthingService.OnWebGuiAvailableListener, @TargetApi(11) public void requireRestart(Activity activity) { new PostTask(mHttpsCertPath).execute(mUrl, PostTask.URI_CONFIG, mApiKey, mConfig.toString()); + // TODO Should wait for completion... if (mRestartPostponed) return;