2016-07-05 2 views
4

Я пытаюсь получить текст копируется в буфер обмена с помощью следующего слушателя:Android, как получить строку из буфера обмена onPrimaryClipChanged?

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.

ответ

7

Я бы предложил добавить слушателя следующим образом вместо создания нового класса. Я включил, как получить текст из 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 
    } 
}); 
+0

Он кидает исключения нулевого указателя: java.lang.NullPointerException: попытка вызвать метод интерфейса «java.lang.String java.lang.CharSequence.toString()» на нулевой ссылки на объект – redrom

+0

Вы, вероятно, необходимо добавить проверку безопасности для item.getText(), являющейся нулевым, если в ClipBoard нет текста, когда запущен onPrimaryClipChanged. –

+0

Есть ли способ получить этот вид данных ClipBoard в iOS? @KarenForde –

Смежные вопросы