From 746ab00794fc1d3e9fd053418b9aeb0ddb23df8d Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Wed, 16 Sep 2020 16:08:15 +0200 Subject: ZipExporterPreference: don't ask for storage permissions on newer android Signed-off-by: Jason A. Donenfeld --- .../wireguard/android/preference/ZipExporterPreference.kt | 13 +++++++++---- .../java/com/wireguard/android/util/DownloadsFileSaver.kt | 2 ++ 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'ui/src/main/java/com') diff --git a/ui/src/main/java/com/wireguard/android/preference/ZipExporterPreference.kt b/ui/src/main/java/com/wireguard/android/preference/ZipExporterPreference.kt index d943c89f..623e272f 100644 --- a/ui/src/main/java/com/wireguard/android/preference/ZipExporterPreference.kt +++ b/ui/src/main/java/com/wireguard/android/preference/ZipExporterPreference.kt @@ -82,11 +82,16 @@ class ZipExporterPreference(context: Context, attrs: AttributeSet?) : Preference when (it) { // When we have successful authentication, or when there is no biometric hardware available. is BiometricAuthenticator.Result.Success, is BiometricAuthenticator.Result.HardwareUnavailableOrDisabled -> { - activity.ensurePermissions(arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { _, grantResults -> - if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - isEnabled = false - exportZip() + if (DownloadsFileSaver.needsWriteExternalStoragePermission) { + activity.ensurePermissions(arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { _, grantResults -> + if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + isEnabled = false + exportZip() + } } + } else { + isEnabled = false + exportZip() } } is BiometricAuthenticator.Result.Failure -> { diff --git a/ui/src/main/java/com/wireguard/android/util/DownloadsFileSaver.kt b/ui/src/main/java/com/wireguard/android/util/DownloadsFileSaver.kt index a0f0e1fb..59cd526b 100644 --- a/ui/src/main/java/com/wireguard/android/util/DownloadsFileSaver.kt +++ b/ui/src/main/java/com/wireguard/android/util/DownloadsFileSaver.kt @@ -18,6 +18,8 @@ import java.io.IOException import java.io.OutputStream object DownloadsFileSaver { + val needsWriteExternalStoragePermission = Build.VERSION.SDK_INT < Build.VERSION_CODES.Q + @Throws(Exception::class) fun save(context: Context, name: String, mimeType: String?, overwriteExisting: Boolean) = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { val contentResolver = context.contentResolver -- cgit v1.2.3-59-g8ed1b