0

Ajaxリクエストを送信し、レスポンスからHTMLを解析/操作し、HTMLデータから新しいオブジェクトを作成するバックグラウンドタスクをAndroidアプリで実行したいと思います。

データの要求と操作、および新しいオブジェクトの作成は非常に簡単です (マルチスレッドなしで)。WebView を作成し、いくつかの JavaScript 関数を含むローカル HTML ファイルをロードし、JavaScript から Ajax リクエストを送信し、jQuery で操作して、'MyJavaScriptInterface' 経由で送り返すことができます。

Java コード スニペット

// method of 'MyJavaScriptInterface'
public void processJSON(String jsonArrayString) {
    try {
        JSONArray array = new JSONArray(jsonArrayString);
        for (int i = 0; i < array.length(); i++) {
            JSONObject row = array.getJSONObject(i);
            // MyObject obj = new MyObject(row.getString("title"),
            //                             row.getString("href")  );
            // do something fancy with the object
        }
    } catch (JSONException e) {
        Log.e("MyJavaScriptInterface", e.getMessage(), e);
    }
}

// initialize WebView
webView.addJavascriptInterface(new MyJavaScriptInterface(), "android");

// load local html file with JavaScript functions
webView.loadUrl("file:///android_asset/www/index.html");

JavaScript コード スニペット

$.ajax({
    url: 'http://example.com/index',
    success: function(data) {
        $(data).find('#container').children().each(function(){

            jsonArray.push( {
                'title': this.title, 
                'href': this.href
            } )
        });

        jsonArray = JSON.stringify(jsonArray);
        // send 'jsonArray' back to the android device
        android.processJSON( jsonArray );
    }
});

HTML コード スニペット:

これがウェブサイトの外観ですが、私はコンテンツを制御できません。

<!DOCTYPE html>
<html>
    <!-- header -->
    [...]
    <body>
        <div id="container">
            <a href="someUrl" title="someTitle"><img src="relativeImageUrl"></a>
                <!-- more links -->
                [...]
        </div>
    </body>
</html>

別のスレッドでデータをロードしたいのですが、これは WebView では不可能なので、ここに私の質問があります:

質問

  • jQuery と JavaScript を使用せずに同じタスクを実行するにはどうすればよいですか?
  • Java で DOM にアクセスする簡単な方法はありますか (または、HTML データの XML 構造全体を解析する必要がありますか)?

前もって感謝します!

4

0 に答える 0