如何从浏览器中复制所选文本?

时间:2015-05-21 00:50:20

标签: android

场景:我正在尝试从浏览器中复制所选文本。

我正在使用服务来监控任何类型的复制事件。

ClipboardManager clipBoard;
CharSequence pasteData = "";


@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    clipBoard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
    clipBoard.addPrimaryClipChangedListener( new ClipboardListener() );

    return Service.START_STICKY;
}


  if ((clipBoard.getPrimaryClipDescription().hasMimeType("text/plain"))) {
            //since the clipboard contains plain text.
            ClipData.Item item = clipBoard.getPrimaryClip().getItemAt(0);
            // Gets the clipboard as text.
            pasteData = item.getText();


            Toast.makeText(PasteItService.this,
                    pasteData,
                    Toast.LENGTH_LONG).show();

        } else {
            Toast.makeText(PasteItService.this,
                    "Empty",
                    Toast.LENGTH_LONG).show();
        }

    }

以上代码适用于其他应用程序,如Whatsapp,徒步,但当我尝试复制任何选定的文本或在Chrome或默认浏览器等任何浏览器中使用直接复制链接文本选项时,上述代码都会出现故障。有时它成功地显示了我选择的实际文本的吐司,但有时候其他部分首先被触发。有时代码根本不起作用。我也尝试过调试,并获得与吐司相同的结果。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

剪贴板中的数据并不总是来自浏览器的文本。你假设它是。不要这样做。它也可以是一个意图或一个uri,你需要能够处理它们。请阅读http://developer.android.com/reference/android/content/ClipData.html