处理已弃用的 android.text.ClipboardManager
Posted
技术标签:
【中文标题】处理已弃用的 android.text.ClipboardManager【英文标题】:Dealing with deprecated android.text.ClipboardManager 【发布时间】:2011-12-24 19:18:02 【问题描述】:android.text.ClipboardManager
自 API 级别 11 起已弃用,取而代之的是 android.content.ClipboardManager
(source)。
如何编写支持这两种情况的代码?导入 android.content.ClipboardManager
并使用它在 11+ 中有效,但在 10 中强制关闭。将导入更改为 android.text.ClipboardManager
会在 11+ 中引发一堆弃用警告。
如何顺利处理这两种情况?我需要导入什么?
【问题讨论】:
【参考方案1】:我最终只使用了旧方法(android.text.ClipboardManager 和来自 this answer 的代码),以及几个 @SuppressWarnings("deprecation") 注释。
【讨论】:
那么弃用解决方案呢..??【参考方案2】:参考this answer:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
final android.content.ClipboardManager clipboardManager = (android.content.ClipboardManager) context
.getSystemService(Context.CLIPBOARD_SERVICE);
final android.content.ClipData clipData = android.content.ClipData
.newPlainText("text label", "text to clip");
clipboardManager.setPrimaryClip(clipData);
else
final android.text.ClipboardManager clipboardManager = (android.text.ClipboardManager) context
.getSystemService(Context.CLIPBOARD_SERVICE);
clipboardManager.setText("text to clip");
【讨论】:
【参考方案3】:明确:
@SuppressWarnings("deprecation")
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
clipboard.setText(shareViaSMSBody);
由于这必须继续在旧设备上运行,因此不推荐使用的代码可能不会从 Android 中删除。
【讨论】:
【参考方案4】:如果您仍然支持
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label for text", "text to copy");
clipboard.setPrimaryClip(clip);
【讨论】:
好吧,我女朋友用的是旧的 kindle,所以 sdk 15 不是一个选择【参考方案5】:以文本形式读取最新的剪贴板:
val clipboardManager = context.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
clipboardManager.addPrimaryClipChangedListener
val clipboardAsText = clipboardManager.primaryClip?.getItemAt(0)?.text
if (clipboardAsText != null)
Toast.makeText(context, "Text in clipboard: $clipboardAsText", Toast.LENGTH_SHORT).show()
【讨论】:
以上是关于处理已弃用的 android.text.ClipboardManager的主要内容,如果未能解决你的问题,请参考以下文章
替代Apache Camel中已弃用的XmlJsonDataFormat