WebView 長押しコピー

WebView 長押しコピーの実現方法が、今のところ、長押しした行の端までを
選択ハイライトにする方法を思いつくのがやっと。
長押しした周りの単語やフレーズだけを選択ハイライトしたいのだが。。。。

グローバル変数で長押し位置取得変数を宣言する。
float x_touch;
float y_touch;
WebView webview;
------------------------


Activity onCreate で、画面サイズを予め取得、、

WindowManager windowmanager = (WindowManager)getSystemService(WINDOW_SERVICE);
Display disp = windowmanager.getDefaultDisplay();
final int screen_width = disp.getWidth();


セットしている WebViewClient の ページ読込開始で、WebView タッチを禁止しているなら
ページ読込終了でタッチ位置を取得→float x_touch , float y_touch

@Override
public void onPageFinished(WebView view,String url){
   super.onPageFinished(view,url);
   view.setOnTouchListener(new View.OnTouchListener(){
      @Override
      public boolean onTouch(View v,MotionEvent event){
         x_touch = event.getX();
         y_touch = event.getY();
         return false;
      }
   });
}

WebView の長押し設定で画面サイズ、タッチ時のY軸で MotionEvent を発行するようにする

webview.setOnLongClickListener(new View.OnLongClickListener(){
   @Override
   public boolean onLongClick(View v){ 
      WebView.HitTestResult hitTestResult = ((WebView)v).getHitTestResult(); 
      if (hitTestResult.getType()==WebView.HitTestResult.UNKNOWN_TYPE ){
         try{
            KeyEvent shiftPressEvent = new KeyEvent(0,0,KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_SHIFT_LEFT,0,0);
            shiftPressEvent.dispatch( webview );
            webview.dispatchTouchEvent(MotionEvent.obtain(0,0,KeyEvent.ACTION_DOWN,0,y_touch,KeyEvent.KEYCODE_SHIFT_LEFT));
            webview.dispatchTouchEvent(MotionEvent.obtain(0,0,KeyEvent.ACTION_DOWN,screen_width,y_touch,KeyEvent.KEYCODE_SHIFT_LEFT)); 
         }catch(Exception e){
         }
         return true; 
      }
      return false;
   }
});