Intent.ACTION_WEB_SEARCH
を使用して、Web検索を簡単に実装することができます。
典型的なコードは以下のような感じになるかと思います。
CharSequence selectedText = textView.getText()
.subSequence(textView.getSelectionStart(), textView.getSelectionEnd());
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, selectedText);
startActivity(intent);
しかしこのコード、コンパイルこそ通るものの正常に動作しません。Google検索は起動されるが、選択したテキストによる検索が実行されないまま止まってしまうのです。
なんでかなあ〜?としばらくハマってしまったんですが、原因はintent.putExtra
で渡す引数です。
1行目を以下のように修正すれば正常に動作しました。
String selectedText = textView.getText()
.subSequence(textView.getSelectionStart(), textView.getSelectionEnd())
.toString();
...
要するにintent.putExtra
にはCharSequence
ではなくString
を渡さなければならないということです。CharSequence
も渡せるし、String implements CharSequence
なので問題ないと思い込んでました・・・。