webview に読み込まれた html ページのいくつかのプロパティを取得する必要があります。ここにあるものに似たもの: stringByEvaluatingJavascriptFromString (iOS メソッド、Android に相当するものは何ですか?)
だから私は JavaScriptInterface を持っています:
class MyJavaScriptInterface {
@android.webkit.JavascriptInterface
public void jsCallback(String jsResult) {
// your code...
Log.d("Debug", jsResult);
}
}
次に、必要な文字列を取得するために使用する JS を次に示します。
webView.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");
webView.loadUrl("javascript:( "
+ "function () { "
+ "var htmltag = document.getElementsByTagName(\"html\");"
+ "var dataStr = htmltag[0].getAttribute(\"some-data-property-i-need\"); "
+ "console.log(window.HTMLOUT);"
+ "window.HTMLOUT.jsCallback(dataStr); } ) ()");
コンソールに次のトレースが表示されます。
06-02 01:14:06.409: V/CallNative fired:(26789): objc://domReady
06-02 01:14:06.464: I/Web Console(26789): undefined at null:1
06-02 01:14:06.480: E/Web Console(26789): Uncaught TypeError: Cannot call method 'jsCallback' of undefined at null:1
「window.HTMLOUT」が未定義である理由がわかりません。ある時点で機能していたことに注意してください。その後、JS部分を少し変更しましたが、何が問題なのかまだわかりません。