diff options
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/UserPreference.kt')
| -rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/UserPreference.kt | 57 |
1 files changed, 9 insertions, 48 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt b/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt index 950b6523..f713ad26 100644 --- a/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt +++ b/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt @@ -41,9 +41,7 @@ import com.github.ajalt.timberkt.w import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.snackbar.Snackbar import com.zeapo.pwdstore.autofill.AutofillPreferenceActivity -import com.zeapo.pwdstore.autofill.AutofillService import com.zeapo.pwdstore.autofill.oreo.BrowserAutofillSupportLevel -import com.zeapo.pwdstore.autofill.oreo.ChromeCompatFix import com.zeapo.pwdstore.autofill.oreo.getInstalledBrowsersWithAutofillSupportLevel import com.zeapo.pwdstore.crypto.BasePgpActivity import com.zeapo.pwdstore.crypto.GetKeyIdsActivity @@ -72,7 +70,6 @@ class UserPreference : AppCompatActivity() { class PrefsFragment : PreferenceFragmentCompat() { private var autoFillEnablePreference: SwitchPreferenceCompat? = null - private var oreoAutofillChromeCompatFix: SwitchPreferenceCompat? = null private var clearSavedPassPreference: Preference? = null private lateinit var autofillDependencies: List<Preference> private lateinit var oreoAutofillDependencies: List<Preference> @@ -118,7 +115,6 @@ class UserPreference : AppCompatActivity() { // Autofill preferences autoFillEnablePreference = findPreference(PreferenceKeys.AUTOFILL_ENABLE) - oreoAutofillChromeCompatFix = findPreference(PreferenceKeys.OREO_AUTOFILL_CHROME_COMPAT_FIX) val oreoAutofillDirectoryStructurePreference = findPreference<ListPreference>(PreferenceKeys.OREO_AUTOFILL_DIRECTORY_STRUCTURE) val oreoAutofillDefaultUsername = findPreference<EditTextPreference>(PreferenceKeys.OREO_AUTOFILL_DEFAULT_USERNAME) val oreoAutofillCustomPublixSuffixes = findPreference<EditTextPreference>(PreferenceKeys.OREO_AUTOFILL_CUSTOM_PUBLIC_SUFFIXES) @@ -277,16 +273,6 @@ class UserPreference : AppCompatActivity() { true } - oreoAutofillChromeCompatFix?.onPreferenceClickListener = ClickListener { - if (oreoAutofillChromeCompatFix!!.isChecked) { - startActivity(Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)) - true - } else { - // Service will disable itself on startup if the preference has the value false. - false - } - } - findPreference<Preference>(PreferenceKeys.EXPORT_PASSWORDS)?.apply { isVisible = sharedPreferences.getBoolean(PreferenceKeys.REPOSITORY_INITIALIZED, false) onPreferenceClickListener = Preference.OnPreferenceClickListener { @@ -409,20 +395,16 @@ class UserPreference : AppCompatActivity() { } private fun updateAutofillSettings() { - val isAccessibilityAutofillServiceEnabled = callingActivity.isAccessibilityAutofillServiceEnabled + val isAccessibilityServiceEnabled = callingActivity.isAccessibilityServiceEnabled val isAutofillServiceEnabled = callingActivity.isAutofillServiceEnabled autoFillEnablePreference?.isChecked = - isAccessibilityAutofillServiceEnabled || isAutofillServiceEnabled + isAccessibilityServiceEnabled || isAutofillServiceEnabled autofillDependencies.forEach { - it.isVisible = isAccessibilityAutofillServiceEnabled + it.isVisible = isAccessibilityServiceEnabled } oreoAutofillDependencies.forEach { it.isVisible = isAutofillServiceEnabled } - oreoAutofillChromeCompatFix?.apply { - isChecked = callingActivity.isChromeCompatFixServiceEnabled - isVisible = callingActivity.isChromeCompatFixServiceSupported - } } private fun updateClearSavedPassphrasePrefs() { @@ -443,16 +425,13 @@ class UserPreference : AppCompatActivity() { } private fun onEnableAutofillClick() { - if (callingActivity.isAccessibilityAutofillServiceEnabled) { + if (callingActivity.isAccessibilityServiceEnabled) { startActivity(Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)) } else if (callingActivity.isAutofillServiceEnabled) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) callingActivity.autofillManager!!.disableAutofillServices() - ChromeCompatFix.setStatusInPreferences(requireContext(), false) - updateAutofillSettings() - } else { + else throw IllegalStateException("isAutofillServiceEnabled == true, but Build.VERSION.SDK_INT < Build.VERSION_CODES.O") - } } else { val enableOreoAutofill = callingActivity.isAutofillServiceSupported MaterialAlertDialogBuilder(callingActivity).run { @@ -744,32 +723,14 @@ class UserPreference : AppCompatActivity() { File("$filesDir/.ssh_key").writeText(lines.joinToString("\n")) } - private val isAccessibilityAutofillServiceEnabled: Boolean + private val isAccessibilityServiceEnabled: Boolean get() { val am = getSystemService<AccessibilityManager>() ?: return false val runningServices = am .getEnabledAccessibilityServiceList(AccessibilityServiceInfo.FEEDBACK_GENERIC) return runningServices - .mapNotNull { it?.resolveInfo?.serviceInfo } - .any { it.packageName == BuildConfig.APPLICATION_ID && it.name == AutofillService::class.java.name } - } - - private val isChromeCompatFixServiceEnabled: Boolean - get() { - val am = getSystemService<AccessibilityManager>() ?: return false - val runningServices = am - .getEnabledAccessibilityServiceList(AccessibilityServiceInfo.FEEDBACK_GENERIC) - return runningServices - .mapNotNull { it?.resolveInfo?.serviceInfo } - .any { it.packageName == BuildConfig.APPLICATION_ID && it.name == ChromeCompatFix::class.java.name } - } - - private val isChromeCompatFixServiceSupported: Boolean - get() { - // Autofill compat mode is only available starting with Android Pie and only makes sense - // when used with Autofill enabled. - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) return false - return isAutofillServiceEnabled + .map { it.id.substringBefore("/") } + .any { it == BuildConfig.APPLICATION_ID } } private val isAutofillServiceSupported: Boolean |
