This commit is contained in:
2026-09-24 16:25:22 +08:00
commit 7428184f01
1198 changed files with 314515 additions and 0 deletions
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
package="io.dcloud.uni_modules.xClipboardS">
<uses-permission android:name="android.permission.READ_CLIPBOARD" />
<uses-permission android:name="android.permission.WRITE_CLIPBOARD" />
</manifest>
@@ -0,0 +1,3 @@
{
"minSdkVersion": "21"
}
@@ -0,0 +1,26 @@
import ClipData from "android.content.ClipData";
import ClipboardManager from "android.content.ClipboardManager";
import Context from "android.content.Context";
export const setClipboardData = (data : string):Promise<boolean> => {
let context = UTSAndroid.getAppContext()!
let clipboard : ClipboardManager | null = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager;
let clip : ClipData | null = ClipData.newPlainText("label", data);
if (clip != null && clipboard != null) {
clipboard.setPrimaryClip(clip);
return Promise.resolve(true)
} else {
return Promise.reject(false) as Promise<boolean>
}
}
export const getClipboardData = ():Promise<string> => {
let context = UTSAndroid.getAppContext()!
let clipboard : ClipboardManager | null = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager;
if (clipboard != null) {
if (clipboard.hasText()) {
return Promise.resolve(clipboard.getText().toString())
}
}
return Promise.reject('未知错误') as Promise<string>
}
@@ -0,0 +1,36 @@
import { BusinessError, pasteboard } from '@kit.BasicServicesKit';
export const setClipboardData = (data : string) : Promise<boolean> => {
let pasteData : pasteboard.PasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, data);
let systemPasteboard : pasteboard.SystemPasteboard = pasteboard.getSystemPasteboard();
return new Promise((res, rej) => {
systemPasteboard.setData(pasteData).then(() => {
console.info("成功")
res(true)
})
.catch((e) => {
const err = e as BusinessError
console.error(err.message)
rej(false)
})
})
}
export const getClipboardData = () : Promise<string> => {
let systemPasteboard : pasteboard.SystemPasteboard = pasteboard.getSystemPasteboard();
// return new Promise((res, rej) => {
// systemPasteboard.getData((err, data) => {
// if (err) {
// console.error(err.message)
// return rej(err.message);
// }
// res(data.getPrimaryText())
// })
// })
return Promise.resolve('')
}
@@ -0,0 +1,11 @@
{
"module": {
"name": "uni_modules__x_clipboard_s",
"type":"har",
"deviceTypes": [
"default",
"tablet",
"2in1"
]
}
}
@@ -0,0 +1,8 @@
{
"string": [
{
"name": "permission_read_pasteboard",
"value": "应用需要读取剪粘板进行应用的个性化需要"
}
]
}
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyAccessedAPITypes</key>
<array/>
<key>NSPrivacyCollectedDataTypes</key>
<array/>
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyTrackingDomains</key>
<array/>
</dict>
</plist>
@@ -0,0 +1,3 @@
{
"deploymentTarget": "12"
}
@@ -0,0 +1,23 @@
import { UIPasteboard } from 'UIKit';
export const setClipboardData = (data : string):Promise<boolean> => {
try {
let borad : UIPasteboard = UIPasteboard.general
borad.string = data;
return Promise.resolve(true) as Promise<boolean>
} catch (errors) {
return Promise.reject(false) as Promise<boolean>
}
}
export const getClipboardData = ():Promise<string> => {
try {
let borad : UIPasteboard = UIPasteboard.general
if(borad.string == null){
return Promise.reject('未知错误') as Promise<string>
}
return Promise.resolve(borad.string!)
} catch (errors) {
return Promise.reject('未知错误') as Promise<string>
}
}
@@ -0,0 +1,27 @@
export const setClipboardData = (data : string):Promise<boolean> => {
return new Promise((resl,rejl)=>{
wx.setClipboardData({
data: data,
success(res) {
resl(true)
},
fail(res) {
rejl(false)
}
})
})
}
export const getClipboardData = ():Promise<string> => {
return new Promise((resl,rejl)=>{
wx.getClipboardData({
success(res) {
resl(res.data)
},
fail(res) {
rejl('未知错误')
}
})
})
}
@@ -0,0 +1,37 @@
export const setClipboardData = (data : string):Promise<boolean> => {
// 设置剪切板内容
return new Promise((resl,rejl)=>{
navigator.clipboard.writeText(data)
.then(() => {
resl(true)
})
.catch(err => {
rejl(false)
console.error('无法设置剪切板数据', err);
});
})
}
export const getClipboardData = ():Promise<string> => {
let inputdom = document.createElement("input") as HTMLInputElement;
inputdom.style.setProperty('opacity', '0')
inputdom.style.setProperty('position', 'absolute')
document.body.appendChild(inputdom)
inputdom.focus();
document.execCommand('paste');
return new Promise((resl,rejl)=>{
if (!document.execCommand('paste')) {
navigator.clipboard.readText()
.then(text => {
resl(text)
})
.catch(err => {
rejl('没有权限')
console.error('无法读取剪切板内容: ', err);
});
} else {
resl(inputdom.value)
}
inputdom.remove()
})
}