MAUI怎么实现剪贴板功能 MAUI Clipboard读写方法

来源:这里教程网 时间:2026-02-21 17:41:01 作者:

MAUI 中实现剪贴板功能非常简单,官方已提供跨平台的

Clipboard
API,支持读写文本内容,且无需额外权限(Android 12+ 需声明
android.permission.READ_CLIPBOARD
才能读取,但写入始终可用)。

写入文本到剪贴板

使用

Clipboard.SetTextAsync()
即可将字符串写入系统剪贴板:

调用前建议先检查是否可用:
Clipboard.IsSupported
写入是异步操作,需用
await
等待完成
失败时会抛出异常(如后台进程限制),建议加 try-catch 示例:
if (Clipboard.IsSupported)
{
    try
    {
        await Clipboard.SetTextAsync("Hello from MAUI!");
    }
    catch (Exception ex)
    {
        // 处理写入失败,例如弹 Toast 或日志
    }
}

从剪贴板读取文本

Clipboard.GetTextAsync()
获取当前剪贴板中的纯文本内容:

仅返回文本(不支持图片、HTML 等富格式) 若剪贴板为空或不含文本,返回
null
或空字符串
Android 12+ 及以上系统,需在
AndroidManifest.xml
中添加权限才能读取:
AndroidManifest.xml 中添加:
<uses-permission android:name="android.permission.READ_CLIPBOARD" />
读取示例:
if (Clipboard.IsSupported)
{
    try
    {
        string text = await Clipboard.GetTextAsync();
        if (!string.IsNullOrWhiteSpace(text))
        {
            // 使用读取到的文本,比如显示在 Label 上
        }
    }
    catch (Exception ex)
    {
        // 权限缺失或访问被拒时触发
    }
}

监听剪贴板内容变化(有限支持)

MAUI 官方

Clipboard
类**不提供原生的剪贴板变更事件**(如 Windows 的
Clipboard.ContentChanged
)。目前只能通过轮询方式间接检测:

启动一个定时器(如
DispatcherTimer
),每隔 1–2 秒调用
GetTextAsync()
缓存上一次读取值,对比变化后触发逻辑 注意避免高频轮询影响性能或耗电,尤其在后台时应暂停 小提示:iOS 和 Android 均不开放系统级剪贴板监听权限,轮询是当前最可行的跨平台方案。

平台注意事项

不同平台行为略有差异,开发时需留意:

iOS:剪贴板内容在 App 进入后台后可能被清空(取决于系统策略),且无法读取其他 App 写入的内容(沙盒限制) Android:Android 12+ 强制要求
READ_CLIPBOARD
权限才能读取;低版本可直接读,但建议统一适配
Windows/macOS:完全支持读写,无额外权限要求

基本上就这些。MAUI 的 Clipboard API 覆盖主流场景,只要注意权限和空值判断,用起来很稳。

相关推荐

热文推荐