From 6b417230a92dcc3e2de0ddd5ee3771294a32e1c7 Mon Sep 17 00:00:00 2001 From: hromml Date: Fri, 12 Mar 2021 17:18:49 +0300 Subject: [PATCH] Fixed the external storage requester for android api version above 28 --- .../allure/android/internal/TestUtils.kt | 25 ++++++++++++++----- buildSrc/src/main/kotlin/Versions.kt | 4 +-- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/allure-kotlin-android/src/main/kotlin/io/qameta/allure/android/internal/TestUtils.kt b/allure-kotlin-android/src/main/kotlin/io/qameta/allure/android/internal/TestUtils.kt index 01d8575..064ab87 100644 --- a/allure-kotlin-android/src/main/kotlin/io/qameta/allure/android/internal/TestUtils.kt +++ b/allure-kotlin-android/src/main/kotlin/io/qameta/allure/android/internal/TestUtils.kt @@ -20,12 +20,25 @@ internal fun isDeviceTest(): Boolean = System.getProperty("java.runtime.name")?.toLowerCase()?.contains("android") ?: false internal fun requestExternalStoragePermissions() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M || Build.VERSION.SDK_INT > Build.VERSION_CODES.P ) return - - with(PermissionRequester()) { - addPermissions("android.permission.WRITE_EXTERNAL_STORAGE") - addPermissions("android.permission.READ_EXTERNAL_STORAGE") - requestPermissions() + when { + Build.VERSION.SDK_INT > Build.VERSION_CODES.M && Build.VERSION.SDK_INT <= Build.VERSION_CODES.P -> { + with(PermissionRequester()) { + addPermissions("android.permission.WRITE_EXTERNAL_STORAGE") + addPermissions("android.permission.READ_EXTERNAL_STORAGE") + requestPermissions() + } + } + Build.VERSION.SDK_INT == Build.VERSION_CODES.Q -> { + uiDevice?.let { + it.executeShellCommand("appops set --uid ${it.currentPackageName} LEGACY_STORAGE allow") + } + } + Build.VERSION.SDK_INT == Build.VERSION_CODES.R -> { + uiDevice?.let { + it.executeShellCommand("appops set --uid ${it.currentPackageName} MANAGE_EXTERNAL_STORAGE allow") + } + } + else -> return } } diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index ada2726..eff795e 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -15,8 +15,8 @@ object Versions { object Android { const val gradlePlugin = "4.0.1" - const val compileSdk = 28 - const val targetSdk = 28 + const val compileSdk = 30 + const val targetSdk = 30 const val minSdk = 18 const val androidXappcompat = "1.2.0"