【问题标题】:Concat a string to clipboard in android在android中将字符串连接到剪贴板
【发布时间】:2015-01-25 18:59:19
【问题描述】:

我想要的是当用户从我的应用程序复制数据时,复制的数据会添加一个字符串。或者还有另一种方法可以做到这一点。

我试过这个:

ClipboardManager.OnPrimaryClipChangedListener mPrimaryChangeListener = new ClipboardManager.OnPrimaryClipChangedListener() {
    public void onPrimaryClipChanged() {

        ClipboardManager clipBoard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
        String cb = (String) clipBoard.getText();
        String tex = "hi i am here";
        String con = cb.concat(tex);
        clipBoard.setText(con);

        clipBoard.addPrimaryClipChangedListener(mPrimaryChangeListener);

    }
};

我把这段代码放在oncreate中。但它不起作用我是android世界的新手。如何实现这个。

【问题讨论】:

    标签: android clipboardmanager


    【解决方案1】:
    ClipboardManager myClipBoard ;
    
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {                   
        myClipBoard = (ClipboardManager) Clipboard.this.getSystemService(android.content.Context.CLIPBOARD_SERVICE);
        myClipBoard.addPrimaryClipChangedListener(mPrimaryClipChangedListener);
    
    }
    
    ClipboardManager.OnPrimaryClipChangedListener mPrimaryClipChangedListener = new ClipboardManager.OnPrimaryClipChangedListener() {
            public void onPrimaryClipChanged() {                
                ClipData clipData = myClipBoard.getPrimaryClip();
    
                 ClipData.Item item = clipData.getItemAt(0);                                                 
                 String tex = ", hi i am here";
                 String con = item.getText().toString().concat(tex);
    
                 myClipBoard.removePrimaryClipChangedListener(mPrimaryClipChangedListener);
                 myClipBoard.setText(con);
                 myClipBoard.addPrimaryClipChangedListener(mPrimaryClipChangedListener);
    
            }
    };
    

    【讨论】:

    • 它第一次工作正常,但之后它多次添加“嗨,我在那里”......我能找到原因吗?
    • 你必须检查“if(mPreviousText.equals(item.getText())) return;”,否则它会复制多次。但为什么它多次调用 onPrimaryClipChanged(),我不知道 :)
    • 我知道为什么要多次调用,因为您的代码“myClipBoard.setText(con)”将调用“onPrimaryClipChanged()”,我修改答案,干杯
    • 在这一行中 myClipBoard = (ClipboardManager) Clipboard.this.getSystemService(android.content.Context.CLIPBOARD_SERVICE);它在 Clipboard.this........ 处给出错误
    猜你喜欢
    • 2010-10-06
    • 2018-10-12
    • 1970-01-01
    • 2013-11-21
    • 2010-10-09
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多