Titanium SDK 中的 Clipboard 模块详解:跨应用数据共享利器
还在为移动应用中复杂的跨应用数据共享而烦恼吗?Titanium SDK 的 Clipboard(剪贴板)模块为你提供了一套简洁高效的解决方案,让数据复制粘贴变得前所未有的简单。本文将深入解析 Clipboard 模块的核心功能、使用技巧和最佳实践,助你轻松实现跨应用数据共享。
📋 Clipboard 模块概览
Clipboard 模块是 Titanium SDK 中用于访问剪贴板数据的核心组件,它提供了一个临时数据存储机制,支持在应用内或应用间进行数据复制和粘贴操作。
🚀 核心功能解析
基础文本操作
Clipboard 模块最常用的功能就是文本的复制和粘贴:
// 设置文本到剪贴板
Ti.UI.Clipboard.setText('Hello Titanium!');
// 从剪贴板获取文本
const text = Ti.UI.Clipboard.getText();
Ti.API.info('剪贴板内容: ' + text);
// 检查剪贴板是否有文本
if (Ti.UI.Clipboard.hasText()) {
Ti.API.info('剪贴板包含文本数据');
}
// 清空剪贴板文本
Ti.UI.Clipboard.clearText();
多格式数据支持
iOS 平台支持多种数据格式的剪贴板操作:
// 设置不同类型的数据
Ti.UI.Clipboard.setData('text/plain', '纯文本内容');
Ti.UI.Clipboard.setData('image/png', imageBlob);
Ti.UI.Clipboard.setData('public.url', 'https://example.com');
// 获取特定类型的数据
const textData = Ti.UI.Clipboard.getData('text/plain');
const imageData = Ti.UI.Clipboard.getData('image/png');
// 检查特定类型数据是否存在
const hasImage = Ti.UI.Clipboard.hasData('image');
const hasURL = Ti.UI.Clipboard.hasURLs();
const hasColor = Ti.UI.Clipboard.hasColors();
📊 平台特性对比
| 功能特性 | iOS 支持 | Android 支持 | 说明 |
|---|---|---|---|
| 文本操作 | ✅ 完全支持 | ✅ 完全支持 | 基础文本复制粘贴 |
| 图像数据 | ✅ 支持 | ❌ 不支持 | iOS 支持图像 Blob |
| URL 数据 | ✅ 支持 | ❌ 不支持 | iOS 支持 URL 类型 |
| 颜色数据 | ✅ 支持 | ❌ 不支持 | iOS 支持颜色值 |
| 多项目 | ✅ 支持 | ❌ 不支持 | iOS 支持多个剪贴板项目 |
| 命名剪贴板 | ✅ 支持 | ❌ 不支持 | iOS 支持自定义命名 |
🎯 高级用法示例
多项目剪贴板操作(iOS)
// 设置多个剪贴板项目
Ti.UI.Clipboard.setItems({
items: [{
'text/plain': 'John Doe',
'public.vcard': vcardData
}, {
'image/png': profileImage,
'text/plain': '用户头像'
}],
options: {
[Ti.UI.CLIPBOARD_OPTION_LOCAL_ONLY]: true,
[Ti.UI.CLIPBOARD_OPTION_EXPIRATION_DATE]: new Date(Date.now() + 3600000) // 1小时后过期
}
});
// 获取所有剪贴板项目
const items = Ti.UI.Clipboard.getItems();
items.forEach((item, index) => {
Ti.API.info(`项目 ${index + 1}:`, JSON.stringify(item));
});
命名剪贴板使用(iOS)
// 创建命名剪贴板
const customClipboard = Ti.UI.createClipboard({
name: 'myAppClipboard',
allowCreation: true
});
// 使用命名剪贴板
customClipboard.setText('这是应用专用的剪贴板内容');
// 在其他地方访问同一个命名剪贴板
const sameClipboard = Ti.UI.createClipboard({
name: 'myAppClipboard'
});
Ti.API.info('共享内容: ' + sameClipboard.getText());
// 移除命名剪贴板
customClipboard.remove();
🔧 实际应用场景
场景 1:跨应用数据共享
// 复制复杂数据到系统剪贴板
function copyToSystemClipboard(data) {
if (Ti.Platform.osname === 'iphone') {
// iOS 支持多格式
Ti.UI.Clipboard.setData('text/plain', data.text);
if (data.image) {
Ti.UI.Clipboard.setData('image/png', data.image);
}
if (data.url) {
Ti.UI.Clipboard.setData('public.url', data.url);
}
} else {
// Android 只支持文本
Ti.UI.Clipboard.setText(data.text);
}
Ti.UI.createNotification({ message: '内容已复制' }).show();
}
场景 2:应用内临时存储
// 使用剪贴板作为临时数据交换区
class TempDataManager {
constructor() {
this.clipboard = Ti.UI.Clipboard;
}
// 保存临时数据
saveTempData(key, value) {
const data = JSON.stringify({ [key]: value });
this.clipboard.setText(data);
}
// 读取临时数据
getTempData(key) {
const data = this.clipboard.getText();
if (data) {
try {
const parsed = JSON.parse(data);
return parsed[key];
} catch (e) {
return null;
}
}
return null;
}
// 清空临时数据
clearTempData() {
this.clipboard.clearText();
}
}
⚠️ 注意事项与最佳实践
1. 平台兼容性处理
function platformSafeClipboard() {
const clipboard = Ti.UI.Clipboard;
// 检查功能可用性
if (Ti.Platform.osname === 'android') {
// Android 只支持文本操作
return {
setText: clipboard.setText.bind(clipboard),
getText: clipboard.getText.bind(clipboard),
hasText: clipboard.hasText.bind(clipboard),
clearText: clipboard.clearText.bind(clipboard),
supportsImages: false,
supportsURLs: false
};
} else {
// iOS 支持完整功能
return {
setText: clipboard.setText.bind(clipboard),
getText: clipboard.getText.bind(clipboard),
hasText: clipboard.hasText.bind(clipboard),
clearText: clipboard.clearText.bind(clipboard),
setData: clipboard.setData.bind(clipboard),
getData: clipboard.getData.bind(clipboard),
hasData: clipboard.hasData.bind(clipboard),
clearData: clipboard.clearData.bind(clipboard),
supportsImages: true,
supportsURLs: true
};
}
}
2. 错误处理与边界情况
// 安全的剪贴板操作封装
class SafeClipboard {
static setText(text) {
try {
Ti.UI.Clipboard.setText(text);
return true;
} catch (error) {
Ti.API.error('设置剪贴板失败: ' + error.message);
return false;
}
}
static getText() {
try {
return Ti.UI.Clipboard.getText() || '';
} catch (error) {
Ti.API.error('读取剪贴板失败: ' + error.message);
return '';
}
}
static clear() {
try {
Ti.UI.Clipboard.clearText();
return true;
} catch (error) {
Ti.API.error('清空剪贴板失败: ' + error.message);
return false;
}
}
}
3. 性能优化建议
🎓 学习路线图
📝 总结
Titanium SDK 的 Clipboard 模块为移动应用开发提供了强大而灵活的剪贴板操作能力。通过本文的详细解析,你应该已经掌握了:
- ✅ 基础文本操作:setText、getText、hasText、clearText 的核心用法
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



