美文网首页
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