diff --git a/twidere/src/main/java/org/mariotaku/twidere/model/util/AccountUtils.java b/twidere/src/main/java/org/mariotaku/twidere/model/util/AccountUtils.java index e8ef7422b..7c6852514 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/model/util/AccountUtils.java +++ b/twidere/src/main/java/org/mariotaku/twidere/model/util/AccountUtils.java @@ -189,6 +189,15 @@ public class AccountUtils { return null; } + public static boolean hasAccountPermission(@NonNull AccountManager am) { + try { + getAccounts(am); + } catch (SecurityException e) { + return false; + } + return true; + } + public static boolean hasInvalidAccount(@NonNull AccountManager am) { for (Account account : getAccounts(am)) { if (!isAccountValid(am, account)) return true; diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/activity/MainActivity.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/activity/MainActivity.kt index 6b57cb155..0e6fdb2a3 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/activity/MainActivity.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/activity/MainActivity.kt @@ -22,7 +22,9 @@ package org.mariotaku.twidere.activity import android.accounts.AccountManager import android.content.Intent import android.os.Bundle +import android.widget.Toast import org.mariotaku.twidere.BuildConfig +import org.mariotaku.twidere.R import org.mariotaku.twidere.constant.IntentConstants.EXTRA_INTENT import org.mariotaku.twidere.model.util.AccountUtils import org.mariotaku.twidere.util.StrictModeUtils @@ -39,6 +41,8 @@ open class MainActivity : BaseActivity() { val am = AccountManager.get(this) if (!Utils.checkDeviceCompatible()) { startActivity(Intent(this, IncompatibleAlertActivity::class.java)) + } else if (!AccountUtils.hasAccountPermission(am)) { + Toast.makeText(this, R.string.message_toast_no_account_permission, Toast.LENGTH_SHORT).show() } else if (AccountUtils.hasInvalidAccount(am)) { val intent = Intent(this, InvalidAccountAlertActivity::class.java) intent.putExtra(EXTRA_INTENT, Intent(this, HomeActivity::class.java)) diff --git a/twidere/src/main/res/values/strings.xml b/twidere/src/main/res/values/strings.xml index d69e6ccfd..25abcf353 100644 --- a/twidere/src/main/res/values/strings.xml +++ b/twidere/src/main/res/values/strings.xml @@ -696,6 +696,7 @@ Network error No account + Account permission is required No account selected No user selected Press again to close