読者です 読者をやめる 読者になる 読者になる

ほげほげ(仮)

仮死状態

WebViewのテキスト選択

Android


WebViewでテキストを選択する方法を調べました。

テキストを選択するにはemulateShiftHeldというメソッドを使えばいいのですが、
このメソッドが2.1以前だと非公開のようです。

2.1以前の場合は
Cosme Zamudio: WebView emulateShiftHeld() on Android Newer SDK's
に書いているように次のようにします。

public void selectAndCopyText() {
    try {
        KeyEvent shiftPressEvent = new KeyEvent(0,0,KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_SHIFT_LEFT,0,0);
        shiftPressEvent.dispatch(mWebView);
    } catch (Exception e) {
        throw new AssertionError(e);
    }
}


これを使う注意としてはonCreateとかで書いちゃダメです。動きません。
WebViewのソースを見ると、なんか初期化みたいなのが完了してないと何もせずにreturnしてるみたいでした。
標準のブラウザのようにメニューから呼び出す方が無難だと思います。


これでテキストの選択とコピーはできるんですが、
勝手に「Text copied to clipboard.」ってToastが表示されます。


本当はコレを何とかしてコピーとは別のことをやりたかったんですけど、WebViewのソースを見るとオレにはムリっぽいです。
せめてToast表示するのだけ止めたいけど、コレもムリっぽい。


本当にやるならWebViewごと自作する勢いでやらないとダメかなぁって思います。


JNI、NDKとか勉強しないといけないなぁ・・・その前にC/C++が分かんねぇけど・・・