处理弃用的android.text.ClipboardManager

时间:2011-11-08 20:43:46

标签: java android clipboard

android.text.ClipboardManager自API级别11以来已弃用,已替换为android.content.ClipboardManagersource)。

如何编写支持这两种情况的代码?导入android.content.ClipboardManager并使用它在11+中工作但强制关闭10.将导入更改为android.text.ClipboardManager会在11 +中抛出一堆弃用警告。

如何顺利处理这两个案件?我需要导入什么?

4 个答案:

答案 0 :(得分:7)

我最后只使用旧方式(android.text.ClipboardManager和this answer中的代码),以及一对@SuppressWarnings(“弃用”)注释。

答案 1 :(得分:4)

显式:

    @SuppressWarnings("deprecation")
    android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
    clipboard.setText(shareViaSMSBody);

由于必须继续使用较旧的设备,因此很可能不会从Android中删除已弃用的代码。

答案 2 :(得分:3)

参考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 :(得分:1)

如果您仍然支持< SDK 11你做的工作太多了。将min设置为15并使用以下代码:

 ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
 ClipData clip = ClipData.newPlainText("label for text", "text to copy");
 clipboard.setPrimaryClip(clip);