美文网首页
Android 混合开发跨应用复制文字Flutter端无效

Android 混合开发跨应用复制文字Flutter端无效

作者: blossom_6694 | 来源:发表于2023-11-28 18:04 被阅读0次

在Android平台上,使用CupertinoTextField默认是无法跨应用读取剪贴板内容的。
这是因为在Android上,剪贴板的读取和写入是受到应用沙盒安全机制的限制的。每个应用都有自己的沙盒环境,不能直接读取其他应用的剪贴板内容。

但是在同一个应用复制的内容,flutter可以获取到。在原生端页面是可以跨应用获取内容的,可能是原生做了处理。
解决方案:可以在页面显示到前台的时候,先获取复制的内容然后再复制在剪切板上。

   override fun onActivityResumed(activity: Activity) {
        activity.replaceStackTop()
        activity.window.decorView.post {
            dealPaste(activity)
        }
    }

private fun dealPaste(context: Context) {
        val manager = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
        manager?.let {
            it.primaryClip?.let { clipData ->
                if(clipData.itemCount > 0) {
                    val addedText = clipData.getItemAt(0).text
                    if (addedText != null) {
                        val addedTextString = addedText.toString()
                        if (!TextUtils.isEmpty(addedTextString)) {
                            // 使用剪贴板内容...
                            manager.setPrimaryClip(ClipData.newPlainText("copy", addedTextString))
                        }
                    }
                }
            }
        }
    }

相关文章

网友评论

      本文标题:Android 混合开发跨应用复制文字Flutter端无效

      本文链接:https://www.haomeiwen.com/subject/jxlxgdtx.html