Android获取粘贴板内容
【Android获取粘贴板内容】获取黏贴版内容的相关代码需要在UiThread上运行,所以没法即时获得数据并返回。
最后的解决办法是,在每次onResume的时候获取黏贴板的内容并保存,程序需要黏贴板内容时直接返回保存的这个值
public void onResume(Activity page) {
// 因为获取黏贴板的内容需要在UiThread上运行,所以没法直接获取到(因为return的时候runnable里的内容很可能还没执行完)
// 故改为在OnResume的时候保存粘贴板里的内容,然后直接返回保存的内容
getPasteString();
}// 从黏贴板获取数据
private void getPasteString()
{
// 获取并保存粘贴板里的内容
try {
activity.runOnUiThread(new Runnable() {@Override
public void run() {
ClipboardManager clipboard = (ClipboardManager)activity.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clipData = https://www.it610.com/article/clipboard.getPrimaryClip();
if (clipData != null && clipData.getItemCount()> 0) {
CharSequence text = clipData.getItemAt(0).getText();
pasteString = text.toString();
Log.d(TAG, "getFromClipboard text=" + pasteString);
}
}
});
} catch (Exception e) {
Log.e(TAG, "getFromClipboard error");
e.printStackTrace();
}
}// 复制到粘贴板
public class copyToClipboard implements Method {@Override
public String Execute(String args, String callBack) {try {
final String argsString = args;
activity.runOnUiThread(new Runnable() {@Override
public void run() {
ClipboardManager clipboard = (ClipboardManager)activity.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clipData = https://www.it610.com/article/ClipData.newPlainText("text", argsString.trim());
clipboard.setPrimaryClip(clipData);
}
});
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
}
推荐阅读
- android第三方框架(五)ButterKnife
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- android|android studio中ndk的使用
- Android事件传递源码分析
- RxJava|RxJava 在Android项目中的使用(一)
- Android7.0|Android7.0 第三方应用无法访问私有库
- 深入理解|深入理解 Android 9.0 Crash 机制(二)
- EditText默认不获取焦点弹出键盘
- android防止连续点击的简单实现(kotlin)