我在3天前曾在这里询问过如何通过剪贴板阻止Android中的复制粘贴操作。我得到了解决方案但剪贴板管理器类不适用于2.3设备。
答案 0 :(得分:2)
android.text.ClipboardManager
适用于API级别< 11
android.content.ClipboardManager
用于API级别> = 11
http://developer.android.com/reference/android/text/ClipboardManager.html http://developer.android.com/reference/android/content/ClipboardManager.html
所以你想要的是剪贴板上的监听器。这在API级别<中是不可能的。你能做的就是黑客攻击。您可以创建一个始终无限运行的Asyntask / Service,以便不断清理剪贴板。
类似的东西:
private class mClipBoardTask extends AsyncTask<Void,Void,Void>{
final android.text.ClipboardManager manager;
private mClipBoardTask()
{
manager = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
}
@Override
protected Void doInBackground(Void... voids)
{
do
{
if(!manager.getText().equals(""))
manager.setText("");
try
{
Thread.sleep(1500);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}while (true);
}
}
并称之为async,如:
new mClipBoardTask().execute();
答案 1 :(得分:1)
我使用下面的代码来解决我的问题,但这可以从api level 11
开始primaryListener = new ClipboardManager.OnPrimaryClipChangedListener() {
@Override
public void onPrimaryClipChanged() {
// TODO Auto-generated method stub
if(clipboardManager.getPrimaryClip().getDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) {
clipObject = ClipData.newPlainText("MIMETYPE_TEXT_PLAIN", "");
} else if (clipboardManager.getPrimaryClip().getDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_HTML)) {
clipObject = ClipData.newHtmlText("MIMETYPE_TEXT_HTML", "", "");
} else if (clipboardManager.getPrimaryClip().getDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_INTENT)) {
clipObject = ClipData.newIntent("MIMETYPE_TEXT_INTENT", null);
} else if (clipboardManager.getPrimaryClip().getDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_URILIST)) {
clipObject = ClipData.newUri(getContentResolver(), "MIMETYPE_TEXT_URILIST", uri);
}
clipboardManager.setPrimaryClip(clipObject);
Toast.makeText(getApplicationContext(), "copy/paste is blocked!!", Toast.LENGTH_SHORT).show();
答案 2 :(得分:0)
将此部分放在oncreate:
ClipboardManager clipBoard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
clipBoard.addPrimaryClipChangedListener( new ClipboardListener() );
活动中的子类:
class ClipboardListener implements ClipboardManager.OnPrimaryClipChangedListener
{
public void onPrimaryClipChanged()
{
// do something useful here with the clipboard
// use getText() method
Toast.makeText(getApplicationContext(), "copy",Toast.LENGTH_SHORT).show();
clipBoard.setText("you are Tracked by me ");
clipBoard.setPrimaryClip(null);
}
}
}