From ee6ee1b320b8099b3adf65316334d9fda1145066 Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Tue, 22 Nov 2022 20:20:19 +0100 Subject: [PATCH] allow setting default editor --- CHANGELOG.md | 1 + .../aves/channel/calls/AppAdapterHandler.kt | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70c6e1416..0f1ef91ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ All notable changes to this project will be documented in this file. ### Changed - No default map style for `izzy` and `libre` flavors +- allow setting default editor ### Fixed diff --git a/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/AppAdapterHandler.kt b/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/AppAdapterHandler.kt index 63f941171..0ac6bf607 100644 --- a/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/AppAdapterHandler.kt +++ b/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/AppAdapterHandler.kt @@ -213,7 +213,6 @@ class AppAdapterHandler(private val context: Context) : MethodCallHandler { } private fun edit(call: MethodCall, result: MethodChannel.Result) { - val title = call.argument("title") val uri = call.argument("uri")?.let { Uri.parse(it) } val mimeType = call.argument("mimeType") if (uri == null) { @@ -224,7 +223,7 @@ class AppAdapterHandler(private val context: Context) : MethodCallHandler { val intent = Intent(Intent.ACTION_EDIT) .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION) .setDataAndType(getShareableUri(context, uri), mimeType) - val started = safeStartActivityChooser(title, intent) + val started = safeStartActivity(intent) result.success(started) } @@ -327,7 +326,16 @@ class AppAdapterHandler(private val context: Context) : MethodCallHandler { context.startActivity(intent) return true } catch (e: SecurityException) { - Log.w(LOG_TAG, "failed to start activity for intent=$intent", e) + if (intent.flags and Intent.FLAG_GRANT_WRITE_URI_PERMISSION != 0) { + // in some environments, providing the write flag yields a `SecurityException`: + // "UID XXXX does not have permission to content://XXXX" + // so we retry without it + Log.i(LOG_TAG, "retry intent=$intent without FLAG_GRANT_WRITE_URI_PERMISSION") + intent.flags = intent.flags and Intent.FLAG_GRANT_WRITE_URI_PERMISSION.inv() + return safeStartActivity(intent) + } else { + Log.w(LOG_TAG, "failed to start activity for intent=$intent", e) + } } return false }