Как получить изображение из буфера обмена, скопированное во встроенный браузер 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;
}
});