diff --git a/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/AccountActionsActivity.java b/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/AccountActionsActivity.java
index 56efdea..c5eae8c 100644
--- a/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/AccountActionsActivity.java
+++ b/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/AccountActionsActivity.java
@@ -2,6 +2,7 @@ package fr.unix_experience.owncloud_sms.activities.remote_account;
import android.content.Intent;
import android.os.Bundle;
+import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
@@ -38,7 +39,12 @@ public class AccountActionsActivity extends AppCompatListActivity {
case 0:
Intent intent = new Intent(this, RestoreMessagesActivity.class);
intent.putExtra("account", _accountName);
- startActivity(intent);
+ try {
+ startActivity(intent);
+ }
+ catch (IllegalStateException e) {
+ Log.e(AccountActionsActivity.TAG, e.getMessage());
+ }
break;
default: break; // Unhandled
}
diff --git a/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/RestoreMessagesActivity.java b/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/RestoreMessagesActivity.java
index df3dfc7..3a67225 100644
--- a/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/RestoreMessagesActivity.java
+++ b/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/RestoreMessagesActivity.java
@@ -1,15 +1,51 @@
package fr.unix_experience.owncloud_sms.activities.remote_account;
+import android.Manifest;
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.content.pm.PackageManager;
import android.os.Bundle;
+import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import fr.unix_experience.owncloud_sms.R;
public class RestoreMessagesActivity extends AppCompatActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_restore_messages);
- }
+ Account _account = null;
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_restore_messages);
+
+ assert getIntent().getExtras() != null;
+
+ String accountName = getIntent().getExtras().getString("account");
+
+ // accountName cannot be null, devel error
+ assert accountName != null;
+ AccountManager accountManager = AccountManager.get(getBaseContext());
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) {
+ // TODO: Consider calling
+ // ActivityCompat#requestPermissions
+ // here to request the missing permissions, and then overriding
+ // public void onRequestPermissionsResult(int requestCode, String[] permissions,
+ // int[] grantResults)
+ // to handle the case where the user grants the permission. See the documentation
+ // for ActivityCompat#requestPermissions for more details.
+ return;
+ }
+ Account[] accountList = accountManager.getAccountsByType(getString(R.string.account_type));
+ for (Account element : accountList) {
+ if (element.name.equals(accountName)) {
+ _account = element;
+ }
+ }
+
+ if (_account == null) {
+ throw new IllegalStateException(getString(R.string.err_didnt_find_account_restore));
+ }
+ }
+
+ private static final String TAG = RestoreMessagesActivity.class.getSimpleName();
}
diff --git a/src/main/java/fr/unix_experience/owncloud_sms/engine/ASyncSMSSync.java b/src/main/java/fr/unix_experience/owncloud_sms/engine/ASyncSMSSync.java
index 8e29534..04ca2c6 100644
--- a/src/main/java/fr/unix_experience/owncloud_sms/engine/ASyncSMSSync.java
+++ b/src/main/java/fr/unix_experience/owncloud_sms/engine/ASyncSMSSync.java
@@ -53,7 +53,7 @@ public interface ASyncSMSSync {
OCSMSNotificationUI.cancel(_context);
} catch (IllegalStateException e) { // Fail to read account data
OCSMSNotificationUI.notify(_context, _context.getString(R.string.fatal_error),
- e.toString(), OCSMSNotificationType.SYNC_FAILED.ordinal());
+ e.getMessage(), OCSMSNotificationType.SYNC_FAILED.ordinal());
} catch (OCSyncException e) {
Log.e(ASyncSMSSync.TAG, _context.getString(e.getErrorId()));
OCSMSNotificationUI.notify(_context, _context.getString(R.string.fatal_error),
diff --git a/src/main/java/fr/unix_experience/owncloud_sms/sync_adapters/SmsSyncAdapter.java b/src/main/java/fr/unix_experience/owncloud_sms/sync_adapters/SmsSyncAdapter.java
index cd50379..953faa4 100644
--- a/src/main/java/fr/unix_experience/owncloud_sms/sync_adapters/SmsSyncAdapter.java
+++ b/src/main/java/fr/unix_experience/owncloud_sms/sync_adapters/SmsSyncAdapter.java
@@ -55,7 +55,7 @@ class SmsSyncAdapter extends AbstractThreadedSyncAdapter {
OCSMSNotificationUI.cancel(getContext());
} catch (IllegalStateException e) {
OCSMSNotificationUI.notify(getContext(), getContext().getString(R.string.fatal_error),
- e.toString(), OCSMSNotificationType.SYNC_FAILED.ordinal());
+ e.getMessage(), OCSMSNotificationType.SYNC_FAILED.ordinal());
} catch (OCSyncException e) {
OCSMSNotificationUI.cancel(getContext());
OCSMSNotificationUI.notify(getContext(), getContext().getString(R.string.fatal_error),
diff --git a/src/main/res/values-en/strings.xml b/src/main/res/values-en/strings.xml
index b76057b..ebf44d6 100644
--- a/src/main/res/values-en/strings.xml
+++ b/src/main/res/values-en/strings.xml
@@ -174,5 +174,6 @@
There is nothing to sync.
This feature is not already implemented and will be available soon.
Minimum phonenumber length
+ We didn\'t find your account to restore your message, this is a very strange situation.
diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml
index 4234097..668d2c1 100644
--- a/src/main/res/values-fr/strings.xml
+++ b/src/main/res/values-fr/strings.xml
@@ -161,4 +161,5 @@
Il n\'y a rien à synchroniser.
Cette fonctionnalité n\'est pas implémentée mais elle sera disponible bientôt.
Longueur minimale du numéro de téléphone
+ Nous n\'avons pas retrouvé le compte que nous souhaitions utiliser pour la restauration. Cette situation est vraiment étrange.
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 69b5410..60b9c99 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -246,4 +246,5 @@
There is nothing to sync.
This feature is not already implemented and will be available soon.
Minimum phonenumber length
+ We didn\'t find your account to restore your message, this is a very strange situation.