2011-11-08 19 views
7

android.text.ClipboardManager自API级别11弃用,并替换为android.content.ClipboardManagersource)。处理弃用的android.text.ClipboardManager

如何编写支持这两种情况的代码?导入android.content.ClipboardManager并在11+中使用该功能,但强制在10中关闭。将导入更改为android.text.ClipboardManager会引发11+以上的弃用警告。

如何顺利处理两种情况?我需要导入什么?

回答

6

我结束了使用旧的方式(android.text.ClipboardManager和this answer的代码),以及一对@SuppressWarnings(“deprecation”)注释。

+1

那么关于弃用解决方案?? –

4

明确:

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

因为这有继续工作的旧设备,很可能是过时的代码不会在Android中移除。

0

如果您仍然支持< SDK 11,您的工作量过大。设置最低为15,使用此代码:

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

好吧,我的gf使用旧kindle,所以sdk 15不是一个选择 – codingpuss

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"); 
} 
相关问题