diff --git a/app/src/main/kotlin/me/eternal/purrfectsnap/ui/setup/screens/impl/PatchSnapchatScreen.kt b/app/src/main/kotlin/me/eternal/purrfectsnap/ui/setup/screens/impl/PatchSnapchatScreen.kt index a90ab200..7b945968 100644 --- a/app/src/main/kotlin/me/eternal/purrfectsnap/ui/setup/screens/impl/PatchSnapchatScreen.kt +++ b/app/src/main/kotlin/me/eternal/purrfectsnap/ui/setup/screens/impl/PatchSnapchatScreen.kt @@ -183,9 +183,15 @@ class PatchSnapchatScreen : SetupScreen() { okHttpClient.newCall(Request.Builder().url(latestApk.downloadUrl).build()).execute().use { response -> if (!response.isSuccessful) return@withContext null - val cacheDir = context.activity?.externalCacheDir ?: context.androidContext.externalCacheDir - ?: context.androidContext.cacheDir + val cacheDir = listOfNotNull( + context.activity?.externalCacheDir, + context.androidContext.externalCacheDir, + context.androidContext.cacheDir + ).firstOrNull { it.exists() || it.mkdirs() } ?: return@withContext null val outputFile = File(cacheDir, latestApk.apkName) + if (outputFile.parentFile?.exists() == false && outputFile.parentFile?.mkdirs() == false) { + return@withContext null + } outputFile.outputStream().use { output -> response.body?.byteStream()?.use { input -> val buffer = ByteArray(DEFAULT_BUFFER_SIZE) diff --git a/app/src/main/kotlin/me/eternal/purrfectsnap/ui/setup/screens/impl/RootInstallSnapchatScreen.kt b/app/src/main/kotlin/me/eternal/purrfectsnap/ui/setup/screens/impl/RootInstallSnapchatScreen.kt index f179ff10..6ef779e6 100644 --- a/app/src/main/kotlin/me/eternal/purrfectsnap/ui/setup/screens/impl/RootInstallSnapchatScreen.kt +++ b/app/src/main/kotlin/me/eternal/purrfectsnap/ui/setup/screens/impl/RootInstallSnapchatScreen.kt @@ -172,9 +172,15 @@ class RootInstallSnapchatScreen : SetupScreen() { okHttpClient.newCall(Request.Builder().url(latestApk.downloadUrl).build()).execute().use { response -> if (!response.isSuccessful) return@withContext null - val cacheDir = context.activity?.externalCacheDir ?: context.androidContext.externalCacheDir - ?: context.androidContext.cacheDir + val cacheDir = listOfNotNull( + context.activity?.externalCacheDir, + context.androidContext.externalCacheDir, + context.androidContext.cacheDir + ).firstOrNull { it.exists() || it.mkdirs() } ?: return@withContext null val outputFile = File(cacheDir, latestApk.apkName) + if (outputFile.parentFile?.exists() == false && outputFile.parentFile?.mkdirs() == false) { + return@withContext null + } outputFile.outputStream().use { output -> response.body?.byteStream()?.use { input -> val buffer = ByteArray(DEFAULT_BUFFER_SIZE)