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中添加权限才能读取:
AndroidManifest.xml 中添加:
读取示例:
if (Clipboard.IsSupported)
{
try
{
string text = await Clipboard.GetTextAsync();
if (!string.IsNullOrWhiteSpace(text))
{
// 使用读取到的文本,比如显示在 Label 上
}
}
catch (Exception ex)
{
// 权限缺失或访问被拒时触发
}
}
监听剪贴板内容变化(有限支持)
MAUI 官方 Clipboard 类**不提供原生的剪贴板变更事件**(如 Windows 的 Clipboard.ContentChanged)。目前只能通过轮询方式间接检测: