webviewで触れたタグの内容を文字列で取得したい。
5 つの段落があり、そのうちの 1 つに触れると、その段落の内容が文字列で表示されるとします。どうすればこれを達成できますか?ありがとう
webviewで触れたタグの内容を文字列で取得したい。
5 つの段落があり、そのうちの 1 つに触れると、その段落の内容が文字列で表示されるとします。どうすればこれを達成できますか?ありがとう
これは非常に簡単ですが、部分的に行う必要があり、JavaScript が必要になります。
1.- Web ビューで JavaScript を有効にします。
web.getSettings().setJavaScriptEnabled(true); //"web" is the object of type WebView
2.- WebView と Html の間に JavaScript インターフェイスを作成します。
public class JavaScriptInterface {
private Handler myHandler = new Handler();
public void getParagraph(final String paragraph){
myHandler.post(new Runnable() {
@Override
public void run() {
//Do something with the String
}
});
}
}
注:メソッドの実行内で、Html から取得した文字列で処理する必要があるものを追加します。このクラスは、WebView を作成するクラス内に作成することも、別のアクティビティから同じ動作を使用する場合は別のクラスとして作成することもできます。
3.- インターフェイスを WebView に送信します。
web.addJavascriptInterface(new JavaScriptInterface(), "android");
/* In this case "android" is the name that you will use from the Html to call
your methods if is not too clear yet, please keep reading */
4.- 各 P タグに onClick イベント ハンドラを追加する必要があります。
<p onclick="android.getParagraph(this.innerText);">Text inside the paragraph</p>
/*android was the name we set for the interface in step 3, getParagraph is the name
of the method created on step2,"this.innerText" retrieves the text inside the paragraph*/
注:この例に表示されている名前はすべて変更できますが、Java クラスの名前を変更する場合は、html 内のすべての呼び出しを変更することを忘れないでください。