问题
I'm trying to get text copied into the clipboard using the following listener:
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");
}
}
The listener is initialized as follows:
ClipboardManager clipBoard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
clipBoard.addPrimaryClipChangedListener( new ClipboardListener());
After the text is copied into the clipboard onPrimaryClipChanged
is fired, but I don't know how to get the copied text in this method using ClipboardManager.getPrimaryClip() because the method is not available from the context and is not passed in the param of onPrimaryClipChanged
.
回答1:
I would suggest adding the listener as follows instead of creating a new class. I have included how to get text from the ClipData.
You mention being unable to access your context in the listener, I've added a comment within the code below showing how to do so.
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
}
});
来源:https://stackoverflow.com/questions/38214257/android-how-to-get-string-from-clipboard-onprimaryclipchanged