WebViewでテキストコピーのために選択ハイライト

Android標準ブラウザや、Opera ブラウザのように、テキストのコピーハイライトを実行しようと方法を調べてた。

WebView#emulateShiftHeld() は、Android 2.2 から公開 API になっているのに、
公式API ドキュメントでは、将来廃止される想定の Deprecate になっている。

WebView の画面View上、長押しでクリップボードコピーするのに、多くのサイトで紹介されてる
KeyEvent.ACTION_DOWN と、KeyEvent.KEYCODE_SHIFT_LEFT によるキーイベントを
ディスパッチする(イベントの割り振る)しかないのか。。。


サンプルは以下のように、、

WebView webview;
  :
webview.
setOnLongClickListener(new View.OnLongClickListener(){
   @Override
   public boolean onLongClick(View v){

      WebView.HitTestResult hitTestResult = *1;


上の shiftPressEvent.dispatch 実行後にこれを実行すれば良いのだろうか?
それに、x , y はどう指定するのだろうか?

*1: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);
         }catch(Exception e){
         }
         return true;
      }
      return false;
   }
}

----------------------
しかし、この方法でも、もしくは、、WebView#emulateShiftHeld() を使ったとしても、テキスト部分を長押ししただけ
では、選択文字列がハイライトにならず、小さい見落としそうな矢印カーソルが出現するだけだ。

android.view.MotionEvent
  obtain(long downTime, long eventTime, int action, float x, float y, int metaState)
メソッドを使って、選択させる位置まで KeyEvent.ACTION_DOWN+KeyEvent.KEYCODE_SHIFT_LEFT
MotionEvent を作成して、Webview の dispatchTouchEvent で指定すれば良いのだろうか?


webview.dispatchTouchEvent(MotionEvent.obtain(downTime,eventTime,KeyEvent.ACTION_DOWN
                                             ,x,y
                                             ,KeyEvent.KEYCODE_SHIFT_LEFT