【发布时间】:2014-07-11 12:02:04
【问题描述】:
我有一个我想要的 android 应用程序:每当用户从编辑文本中按下复制时,任何事件都会发生,它是任何编辑文本,例如来自信使编辑文本,邮件编辑文本任何一个,当用户按下复制文本时,我想发生任何事件,所以任何人都给我这个例子吗?我不知道,所以请帮助我,在此先感谢。
【问题讨论】:
我有一个我想要的 android 应用程序:每当用户从编辑文本中按下复制时,任何事件都会发生,它是任何编辑文本,例如来自信使编辑文本,邮件编辑文本任何一个,当用户按下复制文本时,我想发生任何事件,所以任何人都给我这个例子吗?我不知道,所以请帮助我,在此先感谢。
【问题讨论】:
我得到了解决方案: 我创建了一项服务: 在 oncreate 中:
ClipboardManager clipBoard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
clipBoard.addPrimaryClipChangedListener(new ClipboardListener());
并添加服务:
class ClipboardListener implements
ClipboardManager.OnPrimaryClipChangedListener {
public void onPrimaryClipChanged() {
ClipboardManager clipBoard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
CharSequence pasteData = "";
ClipData.Item item = clipBoard.getPrimaryClip().getItemAt(0);
pasteData = item.getText();
Toast.makeText(getApplicationContext(), "copied val=" + pasteData,
Toast.LENGTH_SHORT).show();
}
}
【讨论】:
通过使用下面的 EditText 代码,您可以获得剪切/复制/粘贴的事件。
public class EditTextMonitor extends EditText{
private final Context mcontext; // Just the constructors to create a new EditText...
public EditTextMonitor(Context context) {
super(context);
this.mcontext = context;
}
public EditTextMonitor(Context context, AttributeSet attrs) {
super(context, attrs);
this.mcontext = context;
}
public EditTextMonitor(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.mcontext = context;
}
@Override
public boolean onTextContextMenuItem(int id) {
// Do your thing:
boolean consumed = super.onTextContextMenuItem(id);
// React:
switch (id){
case android.R.id.cut:
onTextCut();
break;
case android.R.id.paste:
onTextPaste();
break;
case android.R.id.copy:
onTextCopy();
}
return consumed;
}
/**
* Text was cut from this EditText.
*/
public void onTextCut(){Toast.makeText(mcontext, "Event of Cut!", Toast.LENGTH_SHORT).show();
}
/**
* Text was copied from this EditText.
*/
public void onTextCopy(){
Toast.makeText(mcontext, "Event of Copy!", Toast.LENGTH_SHORT).show();
}
/**
* Text was pasted into the EditText.
*/
public void onTextPaste(){
Toast.makeText(mcontext, "Event of Paste!", Toast.LENGTH_SHORT).show();
}}
【讨论】: