


Just use this FindWebView to replace the default webview. Rewrite the show method string data in the SelectedText class to get the selected text
import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.content.Context; import android.content.Intent; import android.os.Build; import android.text.TextUtils; import android.util.AttributeSet; import android.view.ActionMode; import android.view.ActionMode.Callback; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.webkit.JavascriptInterface; import android.webkit.WebSettings; import android.webkit.WebView;
/** * 在webview的界面里面填加 长按界面时出现搜索按钮 点击搜索按钮跳转到搜索页面 * * @author 王训龙 360404113 * * 2014-8-8 上午11:39:16 */ @TargetApi(Build.VERSION_CODES.HONEYCOMB) public class FindWebView extends WebView { public Callback callback; private OnScrollChangedListener mOnScrollChangedListener; @SuppressWarnings("deprecation") public FindWebView(Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing) { super(context, attrs, defStyle, privateBrowsing); init(); } public FindWebView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } public FindWebView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public FindWebView(Context context) { super(context); init(); } @TargetApi(Build.VERSION_CODES.KITKAT) @SuppressLint("SetJavaScriptEnabled") private void init() { WebSettings setting = getSettings(); setting.setJavaScriptEnabled(true); setting.setJavaScriptCanOpenWindowsAutomatically(true); addJavascriptInterface(new SelectedText(), "search"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Constants.DEBUG) { //支持webview调试 WebView.setWebContentsDebuggingEnabled(true); } } @Override public ActionMode startActionMode(Callback callback) { CustomizedSelectActionModeCallback customizedSelectActionModeCallback = new CustomizedSelectActionModeCallback( callback); return super.startActionMode(customizedSelectActionModeCallback); } @Override public boolean onTouchEvent(MotionEvent event) { return super.onTouchEvent(event); } public class CustomizedSelectActionModeCallback implements ActionMode.Callback { private Callback callback; public CustomizedSelectActionModeCallback(Callback callback) { this.callback = callback; } @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { return callback.onCreateActionMode(mode, menu); } @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return callback.onPrepareActionMode(mode, menu); } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { if (item == null || TextUtils.isEmpty(item.getTitle())) { return callback.onActionItemClicked(mode, item); } if (!item.getTitle().toString().contains("搜索") && !item.getTitle().toString().contains("search")) { return callback.onActionItemClicked(mode, item); } loadUrl("javascript:window.search.show(window.getSelection().toString());"); clearFocus(); return true; } @Override public void onDestroyActionMode(ActionMode mode) { callback.onDestroyActionMode(mode); } } public class SelectedText { @JavascriptInterface public void show(String data) { // TODO 这里获取选中的文字 Intent intent = new Intent(getContext(), SearchActivity.class); intent.putExtra(SearchActivity.TAG_SEARCH, data); getContext().startActivity(intent); } } private int dY; @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); int dy = t - oldt; dY += dy; if (mOnScrollChangedListener != null && Math.abs(dY) > 10) { dY = 0; mOnScrollChangedListener.onScroll(l, t, oldl, oldt); } } public interface OnScrollChangedListener { public void onScroll(int l, int t, int oldl, int oldt); } public void setOnScrollChangedListener(OnScrollChangedListener mOnScrollChangedListener) { this.mOnScrollChangedListener = mOnScrollChangedListener; } }
The above is the event that Android rewrites webview to select text and then click the search button when long pressing. By default, chrome accepts the click event. Now it jumps to the content of 360 search page_html/css_WEB-ITnose. For more related content, please pay attention to PHP Chinese website (www.php.cn)!

Solution to implement multi-project carousel in Bootstrap4 Implementing multi-project carousel in Bootstrap4 is not an easy task. Although Bootstrap...

How to achieve the effect of mouse scrolling event penetration? When we browse the web, we often encounter some special interaction designs. For example, on deepseek official website, �...

The default playback control style of HTML video cannot be modified directly through CSS. 1. Create custom controls using JavaScript. 2. Beautify these controls through CSS. 3. Consider compatibility, user experience and performance, using libraries such as Video.js or Plyr can simplify the process.

Potential problems with using native select on mobile phones When developing mobile applications, we often encounter the need for selecting boxes. Normally, developers...

What are the disadvantages of using native select on your phone? When developing applications on mobile devices, it is very important to choose the right UI components. Many developers...

Use Three.js and Octree to optimize collision handling of third-person roaming in the room. Use Octree in Three.js to implement third-person roaming in the room and add collisions...

Issues with native select on mobile phones When developing applications on mobile devices, we often encounter scenarios where users need to make choices. Although native sel...

Exploring the implementation principle of mouse scrolling events When browsing some websites, you may notice that some page elements still allow scrolling the entire page when the mouse is hovering...


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 Linux new version
SublimeText3 Linux latest version

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

Dreamweaver CS6
Visual web development tools

Dreamweaver Mac version
Visual web development tools

WebStorm Mac version
Useful JavaScript development tools
