Loading app/src/main/java/at/bitfire/davdroid/PermissionUtils.kt +12 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,18 @@ object PermissionUtils { locationAvailable } /** * Whether this app declares the given permission (regardless of whether it has been granted or not). * * @param permisssion permission to check * * @return *true* if this app declares [permission] in the manifest; *false* otherwise */ fun declaresPermission(packageManager: PackageManager, permission: String): Boolean { val info = packageManager.getPackageInfo(BuildConfig.APPLICATION_ID, PackageManager.GET_PERMISSIONS) return info.requestedPermissions.contains(permission) } /** * Checks whether at least one of the given permissions is granted. * Loading app/src/main/java/at/bitfire/davdroid/settings/AccountSettings.kt +3 −2 Original line number Diff line number Diff line Loading @@ -231,10 +231,11 @@ class AccountSettings( fun getSyncWifiOnlySSIDs(): List<String>? = if (getSyncWifiOnly()) { (if (settings.containsKey(KEY_WIFI_ONLY_SSIDS)) val strSsids = if (settings.containsKey(KEY_WIFI_ONLY_SSIDS)) settings.getString(KEY_WIFI_ONLY_SSIDS) else accountManager.getUserData(account, KEY_WIFI_ONLY_SSIDS))?.split(',') accountManager.getUserData(account, KEY_WIFI_ONLY_SSIDS) strSsids?.split(',') } else null fun setSyncWifiOnlySSIDs(ssids: List<String>?) = Loading app/src/main/java/at/bitfire/davdroid/settings/BaseDefaultsProvider.kt +2 −2 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ abstract class BaseDefaultsProvider( abstract val booleanDefaults: Map<String, Boolean> abstract val intDefaults: Map<String, Int> abstract val longDefaults: Map<String, Long> abstract val stringDefaults: Map<String, String> abstract val stringDefaults: Map<String, String?> override fun canWrite() = false Loading Loading @@ -54,7 +54,7 @@ abstract class BaseDefaultsProvider( override fun dump(writer: Writer) { val strValues = mutableMapOf<String, String>() val strValues = mutableMapOf<String, String?>() strValues.putAll(booleanDefaults.mapValues { (_, value) -> value.toString() }) strValues.putAll(intDefaults.mapValues { (_, value) -> value.toString() }) strValues.putAll(longDefaults.mapValues { (_, value) -> value.toString() }) Loading app/src/main/java/at/bitfire/davdroid/ui/account/SettingsActivity.kt +1 −1 Original line number Diff line number Diff line Loading @@ -182,7 +182,7 @@ class SettingsActivity: AppCompatActivity() { findPreference<EditTextPreference>(getString(R.string.settings_sync_wifi_only_ssids_key))!!.let { model.syncWifiOnly.observe(viewLifecycleOwner, { wifiOnly -> it.isEnabled = wifiOnly it.isEnabled = wifiOnly && settings.isWritable(AccountSettings.KEY_WIFI_ONLY_SSIDS) }) model.syncWifiOnlySSIDs.observe(viewLifecycleOwner, { onlySSIDs -> checkWifiPermissions() Loading app/src/main/java/at/bitfire/davdroid/ui/account/WifiPermissionsActivity.kt +4 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,10 @@ class WifiPermissionsActivity: AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (!PermissionUtils.WIFI_SSID_PERMISSIONS.all { perm -> PermissionUtils.declaresPermission(packageManager, perm) }) throw IllegalArgumentException("WiFi SSID restriction requires location permissions") supportActionBar?.setDisplayHomeAsUpEnabled(true) val binding = DataBindingUtil.setContentView<ActivityWifiPermissionsBinding>(this, R.layout.activity_wifi_permissions) Loading Loading
app/src/main/java/at/bitfire/davdroid/PermissionUtils.kt +12 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,18 @@ object PermissionUtils { locationAvailable } /** * Whether this app declares the given permission (regardless of whether it has been granted or not). * * @param permisssion permission to check * * @return *true* if this app declares [permission] in the manifest; *false* otherwise */ fun declaresPermission(packageManager: PackageManager, permission: String): Boolean { val info = packageManager.getPackageInfo(BuildConfig.APPLICATION_ID, PackageManager.GET_PERMISSIONS) return info.requestedPermissions.contains(permission) } /** * Checks whether at least one of the given permissions is granted. * Loading
app/src/main/java/at/bitfire/davdroid/settings/AccountSettings.kt +3 −2 Original line number Diff line number Diff line Loading @@ -231,10 +231,11 @@ class AccountSettings( fun getSyncWifiOnlySSIDs(): List<String>? = if (getSyncWifiOnly()) { (if (settings.containsKey(KEY_WIFI_ONLY_SSIDS)) val strSsids = if (settings.containsKey(KEY_WIFI_ONLY_SSIDS)) settings.getString(KEY_WIFI_ONLY_SSIDS) else accountManager.getUserData(account, KEY_WIFI_ONLY_SSIDS))?.split(',') accountManager.getUserData(account, KEY_WIFI_ONLY_SSIDS) strSsids?.split(',') } else null fun setSyncWifiOnlySSIDs(ssids: List<String>?) = Loading
app/src/main/java/at/bitfire/davdroid/settings/BaseDefaultsProvider.kt +2 −2 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ abstract class BaseDefaultsProvider( abstract val booleanDefaults: Map<String, Boolean> abstract val intDefaults: Map<String, Int> abstract val longDefaults: Map<String, Long> abstract val stringDefaults: Map<String, String> abstract val stringDefaults: Map<String, String?> override fun canWrite() = false Loading Loading @@ -54,7 +54,7 @@ abstract class BaseDefaultsProvider( override fun dump(writer: Writer) { val strValues = mutableMapOf<String, String>() val strValues = mutableMapOf<String, String?>() strValues.putAll(booleanDefaults.mapValues { (_, value) -> value.toString() }) strValues.putAll(intDefaults.mapValues { (_, value) -> value.toString() }) strValues.putAll(longDefaults.mapValues { (_, value) -> value.toString() }) Loading
app/src/main/java/at/bitfire/davdroid/ui/account/SettingsActivity.kt +1 −1 Original line number Diff line number Diff line Loading @@ -182,7 +182,7 @@ class SettingsActivity: AppCompatActivity() { findPreference<EditTextPreference>(getString(R.string.settings_sync_wifi_only_ssids_key))!!.let { model.syncWifiOnly.observe(viewLifecycleOwner, { wifiOnly -> it.isEnabled = wifiOnly it.isEnabled = wifiOnly && settings.isWritable(AccountSettings.KEY_WIFI_ONLY_SSIDS) }) model.syncWifiOnlySSIDs.observe(viewLifecycleOwner, { onlySSIDs -> checkWifiPermissions() Loading
app/src/main/java/at/bitfire/davdroid/ui/account/WifiPermissionsActivity.kt +4 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,10 @@ class WifiPermissionsActivity: AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (!PermissionUtils.WIFI_SSID_PERMISSIONS.all { perm -> PermissionUtils.declaresPermission(packageManager, perm) }) throw IllegalArgumentException("WiFi SSID restriction requires location permissions") supportActionBar?.setDisplayHomeAsUpEnabled(true) val binding = DataBindingUtil.setContentView<ActivityWifiPermissionsBinding>(this, R.layout.activity_wifi_permissions) Loading