Как получить изображение из буфера обмена, скопированное во встроенный браузер Android

Мне нужно получить изображение, скопированное с веб-сайта, в встроенном Android-браузере. Мне интересно, какой механизм используется для операций CopyPaste во встроенных приложениях, потому что это не "стандартный" буфер обмена. Например. После копирования изображения в браузере (отображается скопированный в буфер обмена тост), при вставке в новое SMS я могу просмотреть содержимое "буфера обмена" и выбрать тот, который я хотел бы вставить. Контент может быть текстом, ссылкой и изображением.

В моем подходе я использую слушатель буфера обмена в фоновом режиме

    listener = new ClipboardManager.OnPrimaryClipChangedListener() {
        @Override
        public void onPrimaryClipChanged() {
            Log.d(LOG_TAG, "Clipboard content changed");
            processClipboardContent();
        }
    };
    manager.addPrimaryClipChangedListener(listener); // ClipboardManager

Это прекрасно работает для текстового содержимого, скопированного в буфер обмена. Однако этот слушатель не уведомляется при копировании изображений в браузере. Я использую Samsung Galaxy S5 для тестирования. Любые идеи, как получить контент (вероятный URI), скопированный во встроенный браузер?

1 ответ

Я попробовал это. Когда я нажимаю на изображение, оно будет скопировано в буфер обмена, и вы можете вставить его в любое место. Я надеюсь, что это будет работать для вас.

imgDeletePic.setOnLongClickListener(new OnLongClickListener() {

                    @Override
                    public boolean onLongClick(View v) {
                        // TODO Auto-generated method stub
                        try{
                             ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
                             ClipData clip = ClipData.newRawUri("Image", Uri.parse("file://" +strFilePath));
                             clipboard.setPrimaryClip(clip);

                             Toast.makeText(DeletePhotoActivity.this, "Sticker copied.", Toast.LENGTH_SHORT).show();
                        } catch(Exception e) {
                            e.printStackTrace();
                        }
                        return false;
                    }
                });
Другие вопросы по тегам