开发者

Updateing Android application content via internet?

i want to develop an Android application that will take the content from internet (server) and present it in the application.

(ex. i take the todays weather forecast, put the numbers in SQLite database or .txt file , put the database/txt file on internet serve开发者_运维问答r so when i open the application, the app connects&downloads the database via the net and presents me with todays forecast)

If you can references me to some example/video tutorial/book that deals with this issue i will be very thankful!


What you want to do is developing a rest api that provides data for your android app. E.g. you website has some content that you want use in your app, then you could write a php script that just returns that data in a specific format.

E.g. mysite.net/rest/fetchAllLocations.php?maybe_some_parameters

This would return locations in e.g. json format, here is an example how that looks like:

[{"id":1,"shop_lng":8.5317153930664,"shop_lat":52.024803161621,"shop_zipcode":33602,"shop_city":"Bielefeld","shop_street":"Arndtstra\u00dfe","shop_snumber":3,"shop_name":"M\u00fcller","shop_desc":"Kaufhaus"}]

Here is an example for a rest api request:

http://shoqproject.supervisionbielefeld.de/public/gateway/gateway/get-shops-by-city/city/Bielefeld

So when you have your rest api set up you can deal with receiving that data with your android phone. I use a static method to get this data:

public class JsonGrabber{

public static JSONArray receiveData(){  
    String url = "your url";
    String result = "";

    DefaultHttpClient client = new DefaultHttpClient();
    HttpGet method = new HttpGet(url);
    HttpResponse res = null;

    try {
        res = client.execute(method);
    } catch (ClientProtocolException e1) {
        e1.printStackTrace();
    } catch (IOException e1) {
        e1.printStackTrace();
    }

    try{
        InputStream is = res.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"));
         StringBuilder sb = new StringBuilder();
         String line = null;
         while ((line = reader.readLine()) != null) {
                 sb.append(line + "\n");
         }
         is.close();
         result = sb.toString();
    }catch(Exception e){
         Log.e("log_tag", "Error converting result "+e.toString());
    }

    JSONArray jArray = null;

    try{
         jArray = new JSONArray(result);
    }catch(JSONException e){
            Log.e("log_tag", "Error parsing data "+e.toString());
    }

    return jArray;
}
}

Well thats all, once you have your data in json format you just have to parse it:

JSONArray test = (JSONArray) JsonGrabber.receiveData()

try { 
    for(int i=0;i<test.length();i++){
    JSONObject json_data = test.getJSONObject(i);
    int id = json_data.getInt("id");
    }
}

The web request should run in another thread, because it can be a time consuming process. So you need to deal with AsyncTask. Here are some resources:

Painless Threading Multithreading for performance Hello Android Tutorial

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜