我在我的活动中有一个按钮和一个edittext框,按下按钮我将edittext中的所有文本复制到剪贴板。代码在我检查的所有设备中都运行正常,但在运行Android 2.3.6版的Samsung GT-S6802中除外。 我无法发现这个问题。请帮助。
btn3.setOnClickListener(new View.OnClickListener() {
@SuppressLint("NewApi")
@Override
public void onClick(View v) {
if (edit.getText().length() > 0) {
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
clipboard.setText(edit.getText());
Toast.makeText(getApplicationContext(),
"Text is Copied Press long to paste anywhere",
Toast.LENGTH_SHORT).show();
}
}
});
答案 0 :(得分:5)
对于大于HoneyComb的版本,ClipboardManager包从android.text.ClipboardManager更改为android.content.ClipboardManager。正确的代码如下所示。
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= android.os.Build.VERSION_CODES.HONEYCOMB) {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label",
edit.getText());
clipboard.setPrimaryClip(clip);
} else {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
clipboard.setText(edit.getText());
}
答案 1 :(得分:0)
可能会导入类android.content.ClipboardManager
,这仅适用于API> = 11 on。由于2.3.6是API 10,应用程序崩溃我想说java.lang.NoClassDefFoundError
请参阅Android clipboard code that works on all API levels或How to copy text programmatically in my Android app? 对于有效的解决方案。仍然,dalvikvm报告错误,因为它尝试验证所有类,但应用程序不会崩溃。
要防止加载无法验证的类,请参阅http://android-developers.blogspot.de/2010/07/how-to-have-your-cupcake-and-eat-it-too.html,其中在运行时实例化了正确的版本相关抽象类。