Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6cc3261 authored by Ricki Hirner's avatar Ricki Hirner
Browse files

Check whether WiFi permissions are declared

parent 1f47798c
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -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.
     *
+3 −2
Original line number Diff line number Diff line
@@ -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>?) =
+2 −2
Original line number Diff line number Diff line
@@ -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
@@ -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() })
+1 −1
Original line number Diff line number Diff line
@@ -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()
+4 −0
Original line number Diff line number Diff line
@@ -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)