2

我在我的活动中有一个按钮和一个编辑文本框,按下按钮后,我将编辑文本中的所有文本复制到剪贴板。该代码在我检查的所有设备中都运行良好,除了在运行 android 版本 2.3.6 的三星 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();
                }
            }
        });
4

2 回答 2

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());
                            }
于 2013-08-21T10:46:55.020 回答
0

可能类android.content.ClipboardManager已导入,仅适用于 API>=11 。由于 2.3.6 是 API 10,我猜应用程序崩溃了java.lang.NoClassDefFoundError

请参阅适用于所有 API 级别的 Android 剪贴板代码如何在我的 Android 应用程序中以编程方式复制文本? 对于有效的解决方案。尽管如此,dalvikvm 还是会报告错误,因为它会尝试验证所有类,但应用程序不会崩溃。

为防止加载无法验证的类,请参阅http://android-developers.blogspot.de/2010/07/how-to-have-your-cupcake-and-eat-it-too.html其中正确的版本相关抽象类在运行时被实例化。

于 2013-08-19T15:11:44.830 回答