hishidaの開発blog

EBシリーズ(EBPocket,EBWin,EBMac,EBStudio),KWIC Finder,xdoc2txt,読書尚友の開発者ブログ

Android Programming TIPS(2)

WebViewで選択文字列をクリップボードにコピーするには

Android1.5からブラウザのテキストを選択してコピーする機能が加わりました。WebViewを使用したアプリケーションでも使用したいところですが、これにはWebView#emulateShiftHeld() という非公開メソッドが使われています。emulateShiftHeld() はAPI Level8(Android2.2)から公開メソッドになりましたが、2.1以前のAndroidでは使用できません。
次のようにシフトキー押下イベントを発生させれば同様の効果が得られます。

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

元ネタはこちらです↓
http://cosmez.blogspot.com/2010/04/webview-emulateshiftheld-on-android.html