清空SGS2(api 10)的剪贴板

6

我使用的是三星Galaxy S2,并尝试了以下操作:

import android.text.ClipboardManager;
ClipboardManager clipboard = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(null);

并且。
clipboard.setText("");

它没有起作用。有什么想法?


它崩溃了吗?异常日志呢?它只是没起作用吗?你试过其他的东西了吗? - Jack
没有崩溃 - 只是没有清空剪贴板。TouchWiz似乎实现了自己的多项剪贴板,因此忽略了所有对剪贴板管理器的api调用。当我尝试使用setPrimaryClip时它会崩溃,并出现NoClassDef之类的错误(我现在已经卸载了TouchWiz),因为它不在API 10中。我只是希望有一些简单的方法来解决这个问题或者确认TouchWiz确实忽略了这个剪贴板API。 - timothyjc
3个回答

3

三星Galaxy存在一个bug。它无法接受将剪贴板设置为空值。您可以尝试将其设置为空格。

clipboard.setText(" ");

请查看此页面以获取更多信息。


我会拿到我朋友的原版SGS2手机进行测试,我的手机目前安装了CyanogenMod系统。 - timothyjc

1

你尝试过使用.setPrimaryClip(ClipData clip)吗?文档如下:

public void setPrimaryClip (ClipData clip)

自API Level 11起,在剪贴板上设置当前主要剪辑。这是涉及正常剪切和粘贴操作的剪辑。 参数

clip 要设置的剪辑数据项。

根据文档,setText()已被弃用。

我知道这个问题很老了,但还是值得一试。


1
是的 - 那个方法只有在API 11及以上版本才可用。SGS2运行的是2.3,所以不可用。 - timothyjc

0

清除剪贴板 v3.0 api-11

clipboard1 = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

    clipboard1
            .addPrimaryClipChangedListener(new OnPrimaryClipChangedListener() {

                public void onPrimaryClipChanged() {
                    copyText = (String) clipboard1.getText();
                    Log.d("Copytext", copyText);
                    Toast.makeText(javaButtonTest.this, copyText, Toast.LENGTH_LONG).show();
                    //ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
                    if (clipboard1.hasText()) {
                        copyText = (String) clipboard1.getText();
                        clipboard1.setText("");
                    }

                }
            });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接