提问者:小点点

如何在jetpack撰写中使用剪贴板服务


我想复制一个字符串到用户的移动剪贴板,但我不知道如何在jetpack撰写中使用剪贴板服务,如果有任何替代方案或任何方法,我们可以使用复制文本到剪贴板请分享。


共2个答案

匿名用户

您可以使用LocalClipboardManager设置和获取文本

val clipboardManager: ClipboardManager = LocalClipboardManager.current
var text by remember { mutableStateOf("")}

Column(modifier = Modifier.fillMaxSize()) {

    TextField(value = text, onValueChange = {text = it})
    Button(onClick = {
        clipboardManager.setText(AnnotatedString((text)))
    }) {
        Text("Copy")
    }

    Button(onClick = {
      clipboardManager.getText()?.text?.let {
          text = it
      }
    }) {
        Text("Get")
    }
}

匿名用户

您可以创建一个函数来将文本复制到剪贴板。我做了这个:

fun copyToClipboard(context: Context, text: String) {
    val clipboardManager =
        context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
    val clip = ClipData.newPlainText("password", text)
    clipboardManager.setPrimaryClip(clip)
}

密码标签是因为我用它来复制密码,但您应该将其替换为代表您正在复制的内容的标签。

要获取上下文,您可以在包含视图的模块中使用LocalContext. current。例如,我有一个按钮可以调用TopContent模块中的copy ToClipboard函数,因此我将上下文传递给它。

@Composable
fun MyApp() {
    val myOptions = getOptions(titles = listOf("Capital letters", "Numbers", "Symbols"))
    val mySlider = getSliderInfo()
    val myPassword = getPassword()
    val context = LocalContext.current

    Column {
        MyTitle()
        Box(modifier = Modifier.padding(25.dp)) {
            Column(
                modifier = Modifier.fillMaxSize(),
                horizontalAlignment = Alignment.CenterHorizontally,
                verticalArrangement = Arrangement.SpaceBetween
            ) {
                TopContent(options = myOptions, slider = mySlider, myPassword, context)
                GenerateButton(options = myOptions, slider = mySlider, myPassword)
            }
        }
    }
}

如果您有问题,请确保您正在导入此库:

import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context

你也可以读一篇文章,在这里更好地解释这一点!