如何在Android 2.3中阻止从剪贴板复制粘贴?

时间:2014-10-02 11:47:33

标签: android

我在3天前曾在这里询问过如何通过剪贴板阻止Android中的复制粘贴操作。我得到了解决方案但剪贴板管理器类不适用于2.3设备。

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);
       }

    }
}