私は webview を備えたアプリを持っており、webview の本文からユーザーが選択したテキストを取得しようとしています。オペレーティング システムは iOS と同じように処理できると思うかもしれませんが、これは Android がまったく不十分な多くの場所の 1 つです。私はこのウェブサイトとグーグルを調べましたが、私を助けるものは何も見つかりませんでした. 私のアプリには、幸いなことに、webview にロードするスクリプトと通信するための JavaScript インターフェイスがあります。javascript を使用して webview からテキストを選択できると思いました。クロムでは、次のJavaScriptでこれを行うことができます:
window.getSelection.toString();
現在、上記のコマンドを実行し、その結果を JavaScript インターフェイスのメソッドに返す js ファイル内の関数を呼び出すボタンがあります。そのメッセージは、私の JavaScript 関数の結果を乾杯します。だから私はテキストを選択してからこのボタンを押します。唯一の問題は、トースト メッセージが次のメッセージを返すことです。
javascript returned:
いつ戻るべきか
javascript returned: <my selected text>
'.toString(); を削除すると 私のjavascriptコマンドの一部で、テキストを選択してボタンを押すと、次のメッセージが表示されます
javascript returned: undefined
なぜこれが機能しないのですか?
これがコンテキスト内の私のコードです。これは、呼び出される JavaScript です。
myNameSpace.getTextSelection = function()
{
var str;
if (window.getSelection){
str = window.getSelection().toString();
} else {
str = 'does not';
}
window.myJSHandler.getSelectedText(str);
};
そして、これが呼び出しているJava関数です
public void getSelectedText(String text)
{
String str = "function called. it returned: " + text;
Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show();
}