


Android では、WebView を長押ししたときにテキストを選択して検索ボタンをクリックするイベントが書き換えられ、Chrome はクリック イベントを受け入れるようになり、360 検索の page_html/css_WEB-ITnose にジャンプします。
デフォルトの Web ビューをこの FindWebView に置き換えるだけです。SelectedText クラスの show メソッド文字列データを書き換えて、選択されたテキストを取得します
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; } }
上記は、長押しして検索ボタン イベントをクリックしたときにテキストを選択するように Android が Web ビューを書き換える方法です。デフォルトでは、Chrome はクリック イベントを受け入れます。さらに関連するコンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

OnLeaks は、X (旧 Twitter) のフォロワーから 4,000 ドル以上を集めようとして失敗した数日後、Android Headlines と提携して Galaxy S25 Ultra のファーストルックを提供しました。コンテキストとして、h の下に埋め込まれたレンダリング イメージ

TCLは、2つの新しいスマートフォンの発表に加えて、NXTPAPER 14と呼ばれる新しいAndroidタブレットも発表しました。その巨大な画面サイズはセールスポイントの1つです。 NXTPAPER 14 は、TCL の代表的なブランドであるマット LCD パネルのバージョン 3.0 を搭載しています。

ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

Vivo Y300 Pro は完全に公開されたばかりで、大容量バッテリーを備えた最もスリムなミッドレンジ Android スマートフォンの 1 つです。正確に言うと、このスマートフォンの厚さはわずか 7.69 mm ですが、6,500 mAh のバッテリーを搭載しています。これは最近発売されたものと同じ容量です

サムスンは、ファンエディション(FE)スマートフォンシリーズをいつアップデートするかについて、まだ何のヒントも提供していない。現時点では、Galaxy S23 FE は 2023 年 10 月初めに発表された同社の最新版のままです。

Redmi Note 14 Pro Plusは、昨年のRedmi Note 13 Pro Plus(Amazonで現在375ドル)の直接の後継者として正式に発表されました。予想通り、Redmi Note 14 Pro Plusは、Redmi Note 14およびRedmi Note 14 Proと並んでRedmi Note 14シリーズをリードします。李

Motorola は今年数え切れないほどのデバイスをリリースしましたが、そのうち折りたたみ式デバイスは 2 つだけです。ちなみに、世界の大部分ではこのペアが Razr 50 および Razr 50 Ultra として受け入れられていますが、Motorola は北米では Razr 2024 および Razr 2 として提供しています。
