处理已弃用的 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

已弃用的 OpenGL 功能

用 .on 替换已弃用的 .live [重复]

尝试替换已弃用的 loadnibnamed:owner

是否有快速替代已弃用的“SKPaymentTransaction.transactionReceipt”?

GestureDetector 已弃用的问题