android.text.ClipboardManager
自API级别11以来已弃用,已替换为android.content.ClipboardManager
(source)。
如何编写支持这两种情况的代码?导入android.content.ClipboardManager
并使用它在11+中工作但强制关闭10.将导入更改为android.text.ClipboardManager
会在11 +中抛出一堆弃用警告。
如何顺利处理这两个案件?我需要导入什么?
答案 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);