MAUI中剪贴板功能通过Clipboard API实现,支持跨平台读写文本:写入用SetTextAsync()(需检查IsSupported并try-catch),读取用GetTextAsync()(Android 12+需READ_CLIPBOARD权限),变更监听仅能轮询。

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中添加权限才能读取:
读取示例:
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:剪贴板内容在 App 进入后台后可能被清空(取决于系统策略),且无法读取其他 App 写入的内容(沙盒限制)
-
Android:Android 12+ 强制要求
READ_CLIPBOARD权限才能读取;低版本可直接读,但建议统一适配 - Windows/macOS:完全支持读写,无额外权限要求
基本上就这些。MAUI 的 Clipboard API 覆盖主流场景,只要注意权限和空值判断,用起来很稳。










