diff --git a/app/src/main/java/io/github/wulkanowy/activity/login/LoginTask.java b/app/src/main/java/io/github/wulkanowy/activity/login/LoginTask.java index fd219e2c..ce72fad9 100644 --- a/app/src/main/java/io/github/wulkanowy/activity/login/LoginTask.java +++ b/app/src/main/java/io/github/wulkanowy/activity/login/LoginTask.java @@ -4,10 +4,12 @@ import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.app.Activity; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.support.design.widget.Snackbar; import android.support.design.widget.TextInputLayout; +import android.support.v7.app.AlertDialog; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; @@ -86,6 +88,8 @@ public class LoginTask extends AsyncTask { return R.string.encrypt_failed_text; } catch (NotLoggedInErrorException | IOException e) { return R.string.login_denied_text; + } catch (UnsupportedOperationException e) { + return -1; } GradeJob gradeJob = new GradeJob(); @@ -135,6 +139,21 @@ public class LoginTask extends AsyncTask { showSoftKeyboard(symbolView); break; + // if rooted and SDK < 18 + case -1: + final AlertDialog.Builder alertDialog = new AlertDialog.Builder(activity.get()) + .setIcon(android.R.drawable.ic_dialog_alert) + .setTitle(R.string.alert_dialog_blocked_app) + .setMessage(R.string.alert_dialog_blocked_app_message) + .setPositiveButton(R.string.dialog_close, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + dialogInterface.dismiss(); + } + }); + alertDialog.show(); + break; + default: Snackbar.make(activity.get().findViewById(R.id.coordinatorLayout), messageID, Snackbar.LENGTH_LONG).show(); diff --git a/app/src/main/java/io/github/wulkanowy/security/Safety.java b/app/src/main/java/io/github/wulkanowy/security/Safety.java index 65f99398..d4969eb7 100644 --- a/app/src/main/java/io/github/wulkanowy/security/Safety.java +++ b/app/src/main/java/io/github/wulkanowy/security/Safety.java @@ -3,7 +3,6 @@ package io.github.wulkanowy.security; import android.content.Context; import android.os.Build; import android.util.Base64; -import android.util.Log; import io.github.wulkanowy.utilities.RootUtilities; @@ -19,8 +18,7 @@ public class Safety extends Scrambler { if (!RootUtilities.isRooted()) { return new String(Base64.encode(plainText.getBytes(), Base64.DEFAULT)); } else { - Log.e(Scrambler.DEBUG_TAG, "Password store in this devices isn't safe because is rooted"); - throw new UnsupportedOperationException("Password store in this devices isn't safe because is rooted"); + throw new UnsupportedOperationException("Stored data in this devices isn't safe because android is rooted"); } } } diff --git a/app/src/main/java/io/github/wulkanowy/services/VulcanSynchronization.java b/app/src/main/java/io/github/wulkanowy/services/VulcanSynchronization.java index 27f25ed0..fcd0dccd 100644 --- a/app/src/main/java/io/github/wulkanowy/services/VulcanSynchronization.java +++ b/app/src/main/java/io/github/wulkanowy/services/VulcanSynchronization.java @@ -39,7 +39,8 @@ public class VulcanSynchronization { } public void firstLoginSignInStep(Context context, DaoSession daoSession) - throws NotLoggedInErrorException, AccountPermissionException, IOException, CryptoException { + throws NotLoggedInErrorException, AccountPermissionException, IOException, CryptoException, + UnsupportedOperationException { if (firstAccountLogin != null && certificate != null) { loginSession = firstAccountLogin.login(context, daoSession, certificate); } else { diff --git a/app/src/main/java/io/github/wulkanowy/services/synchronisation/FirstAccountLogin.java b/app/src/main/java/io/github/wulkanowy/services/synchronisation/FirstAccountLogin.java index 9b88de4a..e24300f4 100644 --- a/app/src/main/java/io/github/wulkanowy/services/synchronisation/FirstAccountLogin.java +++ b/app/src/main/java/io/github/wulkanowy/services/synchronisation/FirstAccountLogin.java @@ -44,7 +44,8 @@ public class FirstAccountLogin { } public LoginSession login(Context context, DaoSession daoSession, String certificate) - throws NotLoggedInErrorException, AccountPermissionException, IOException, CryptoException { + throws NotLoggedInErrorException, AccountPermissionException, IOException, CryptoException, + UnsupportedOperationException { long userId; diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 2df6b575..d287668c 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -39,10 +39,11 @@ Brak ocen Brak połączenia z internetem - To urządzenie posiada posiada podwyższone uprawnienia (root). Automatyczne logowanie zosatło wyłączone. Szyfrowanie nie powiodło się. Automatyczne logowanie zostało wyłączone Wersja %1$s "Podczas odświeżania zawartości wystąpił błąd. " + Blokada aplikacji + W obawie o bezpieczeństwo przechowywanych danych osobistych na urządzeniu z podwyższonymi uprawnieniami (root), aplikacja Wulkanowy została zablokowana Opis Waga diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3bf0dd98..a4151ffe 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -39,10 +39,11 @@ No grades No internet connection - This device is rooted. Automatic login has been disabled Encryption failed. Automatic login has been disabled Version %1$s An error occurred while refreshing the content. + Application lock + For the sake of safety of personal data stored on a device with increased authorization (root), the Wulkanowy application has been blocked. Description Weight