fixed copy to clipboard action on older devices

This commit is contained in:
Thibault Deckers 2021-08-08 12:03:32 +09:00
parent bb5ff51a64
commit 6a3e830d14

View file

@ -4,6 +4,8 @@ import android.content.*
import android.content.pm.ApplicationInfo import android.content.pm.ApplicationInfo
import android.content.res.Configuration import android.content.res.Configuration
import android.net.Uri import android.net.Uri
import android.os.Handler
import android.os.Looper
import android.util.Log import android.util.Log
import androidx.core.content.FileProvider import androidx.core.content.FileProvider
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
@ -141,13 +143,21 @@ class AppAdapterHandler(private val context: Context) : MethodCallHandler {
return return
} }
val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager // on older devices, `ClipboardManager` initialization must happen on the main thread
if (clipboard != null) { // (e.g. Samsung S7 with Android 8.0 / API 26, but not on Tab A 10.1 with Android 8.1 / API 27)
val clip = ClipData.newUri(context.contentResolver, label, getShareableUri(uri)) Handler(Looper.getMainLooper()).post {
clipboard.setPrimaryClip(clip) try {
result.success(true) val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager
} else { if (clipboard != null) {
result.success(false) val clip = ClipData.newUri(context.contentResolver, label, getShareableUri(uri))
clipboard.setPrimaryClip(clip)
result.success(true)
} else {
result.success(false)
}
} catch (e: Exception) {
result.error("copyToClipboard-exception", "failed to set clip", e.message)
}
} }
} }