android webview 选择复制粘贴,android WebView 长按自由复制文字,进入文字选择模式...

/**

* 模拟点击事件和长按事件

*

*/

public class TouchEventRunnable implements Runnable {

private int x;

private int y;

private boolean isLongPress;

public TouchEventRunnable(int x, int y) {

this.x = x;

this.y = y;

}

public TouchEventRunnable(int x, int y, boolean isLongPress) {

this.x = x;

this.y = y;

this.isLongPress = isLongPress;

}

@Override

public void run() {

if(isLongPress){

longClickOnScreen(x,y);

}else{

onClick();

}

}

private void longClickOnScreen(int x, int y) {

final Instrumentation inst = new Instrumentation();

try {

long downTime = SystemClock.uptimeMillis();

long eventTime = SystemClock.uptimeMillis();

final MotionEvent eventDown = MotionEvent.obtain(downTime,

eventTime, MotionEvent.ACTION_DOWN, x, y, 0);

eventDown.setSource(InputDevice.SOURCE_TOUCHSCREEN);

final MotionEvent eventMove = MotionEvent.obtain(downTime, eventTime,

MotionEvent.ACTION_MOVE, x, y+1, 0);

eventMove.setSource(InputDevice.SOURCE_TOUCHSCREEN);

final MotionEvent eventUp = MotionEvent.obtain(downTime, eventTime,

MotionEvent.ACTION_UP, x, y, 0);

eventUp.setSource(InputDevice.SOURCE_TOUCHSCREEN);

inst.sendPointerSync(eventDown);

inst.sendPointerSync(eventMove);

try {

Thread.sleep(650);

} catch (InterruptedException e) {

e.printStackTrace();

}

inst.sendPointerSync(eventUp);

} catch (NullPointerException e) {

e.printStackTrace();

}

}

private void onClick(){

Instrumentation inst = new Instrumentation();

inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(),

MotionEvent.ACTION_DOWN, x, y, 0));

inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(),

MotionEvent.ACTION_UP, x, y, 0));

//Log.v("LOG", " x = " + x + " y = " + y);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android WebView中启用网页复制功能,可以在WebChromeClient中使用registerForContextMenu()方法。 以下是示例代码: ```java webView.setWebChromeClient(new WebChromeClient() { @Override public void onLongPressUpdateAnchorNode(@NonNull HitTestResult hitTestResult, @NonNull MotionEvent event, boolean isDialog) { super.onLongPressUpdateAnchorNode(hitTestResult, event, isDialog); if (hitTestResult.getType() == HitTestResult.IMAGE_TYPE || hitTestResult.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE) { final String imgUrl = hitTestResult.getExtra(); registerForContextMenu(webView); openContextMenu(webView); } } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); final WebView.HitTestResult result = webView.getHitTestResult(); if (result.getType() == WebView.HitTestResult.IMAGE_TYPE || result.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) { menu.setHeaderTitle("操作"); menu.add(0, 0, 0, "复制图片链接").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); cm.setPrimaryClip(ClipData.newPlainText("image url", imgUrl)); Toast.makeText(MainActivity.this, "复制成功", Toast.LENGTH_SHORT).show(); return true; } }); } } }); ``` 在上面的代码中,我们使用了onLongPressUpdateAnchorNode()方法来检查用户是否按了一个图片元素,如果是,则获取图片的URL并注册上下文菜单。在onCreateContextMenu()方法中,我们创建了一个上下文菜单,允许用户复制图片链接。在菜单项被点击时,我们将图片的URL复制到剪贴板中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值