【问题标题】:Android how to get string from clipboard onPrimaryClipChanged?Android如何从剪贴板onPrimaryClipChanged获取字符串?
【发布时间】:2016-07-05 23:14:07
【问题描述】:

我正在尝试使用以下侦听器将文本复制到剪贴板:

import android.content.ClipboardManager.OnPrimaryClipChangedListener;
import com.orhanobut.logger.Logger;

public class ClipboardListener implements OnPrimaryClipChangedListener
{

    public void onPrimaryClipChanged()
    {
        // do something useful here with the clipboard
        // use getText() method
        Logger.d("Clipped");
    }
}

监听器初始化如下:

ClipboardManager clipBoard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
clipBoard.addPrimaryClipChangedListener( new ClipboardListener());

文本复制到剪贴板后onPrimaryClipChanged被触发,但是我不知道如何在这个方法中使用ClipboardManager.getPrimaryClip()获取复制的文本,因为该方法在上下文中不可用并且没有传入onPrimaryClipChanged 的参数。

【问题讨论】:

    标签: android clipboard clipboardmanager


    【解决方案1】:

    我建议按如下方式添加侦听器,而不是创建新类。我已经包含了如何从 ClipData 中获取文本。

    您提到无法在侦听器中访问您的上下文,我在下面的代码中添加了一条注释,说明了如何做到这一点。

    ClipboardManager clipBoard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
    clipBoard.addPrimaryClipChangedListener(new OnPrimaryClipChangedListener() {
    
        @Override
        public void onPrimaryClipChanged() {
            ClipData clipData = clipBoard.getPrimaryClip();
            ClipData.Item item = clipData.getItemAt(0);
            String text = item.getText().toString();
    
            // Access your context here using YourActivityName.this
        }
    });
    

    【讨论】:

    • 抛出空指针异常:java.lang.NullPointerException:尝试在空对象引用上调用接口方法'java.lang.String java.lang.CharSequence.toString()'
    • 当 onPrimaryClipChanged 被触发时,如果剪贴板中没有文本,您可能需要为 item.getText() 添加安全检查。
    • 有没有办法在 iOS 中获取这种剪贴板数据? @KarenForde
    • @TapanKumarPatro 我不知道对不起,我不是 iOS 开发者
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    • 2010-10-09
    相关资源
    最近更新 更多