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.