From c2df2f8d44377c916256c406abf846d4d51b6731 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Wed, 3 Jun 2020 09:45:58 +0300 Subject: [PATCH] Show a snack if missing permissions. A lot of people don't grant etesync the appropriate permissions and then complain it doesn't work. Hopefully this will fix this point of failure. --- .../syncadapter/ui/AccountsActivity.kt | 21 +++++++++++++++++++ app/src/main/res/values/strings.xml | 1 + 2 files changed, 22 insertions(+) diff --git a/app/src/main/java/com/etesync/syncadapter/ui/AccountsActivity.kt b/app/src/main/java/com/etesync/syncadapter/ui/AccountsActivity.kt index 60d1c6ab..a7359feb 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/AccountsActivity.kt +++ b/app/src/main/java/com/etesync/syncadapter/ui/AccountsActivity.kt @@ -12,6 +12,7 @@ import android.content.ContentResolver import android.content.ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS import android.content.Intent import android.content.SyncStatusObserver +import android.content.pm.PackageManager import android.os.Bundle import android.view.Gravity import android.view.MenuItem @@ -132,6 +133,26 @@ class AccountsActivity : BaseActivity(), NavigationView.OnNavigationItemSelected return true } + override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + val denied = HashMap() + for (permission in permissions.withIndex()) { + val status = grantResults[permission.index] + if (status != PackageManager.PERMISSION_GRANTED) { + val key = permission.value.substringAfterLast('_') + if (key != "TASKS") { + // We don't want to show it for tasks + denied[key] = true + } + } + } + + if (denied.size > 0) { + val deniedString = denied.keys.joinToString(", ") + Snackbar.make(findViewById(R.id.coordinator), getString(R.string.accounts_missing_permissions, deniedString), Snackbar.LENGTH_INDEFINITE).show() + } + } + companion object { val HINT_ACCOUNT_ADD = "AddAccount" } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5f3601c8..3e5c535d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -81,6 +81,7 @@ System-wide automatic synchronization is disabled Enable You need to add an account in order to use EteSync. Click here to add one... + Missing permissions: %s