1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. sem_thesis, 20.05.2011 #1
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied

    Ich schreibe eine Facebook-basierte App, welche nach Login User-Daten von Facebook sammelt.
    Dabei stütze ich mich auf der Facebook SDK Framework, welche Login/Logout/HTTP-Requests schicken und empfangen managt (mithilfe der Klasse AsyncFacebookRunner.java und Facebook.java).

    Ich muss nur 2 Instanzen der beiden Klassen erstellen und die gegebenen Funktionen benutzen.

    Mein Code macht folgendes:
    1) FB Login
    2) Beim Klick auf Menüoption wird ein HTTP-Request geschickt und in der entsprechenden Klasse bearbeitet.


    Hier ist das Beispiel um User-Event zu sammeln:
    Code:
        private Facebook mFacebook;
        private AsyncFacebookRunner mAsyncRunner;
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            int itemId = item.getItemId();
            switch (itemId) {
    .......
            case MyClassName.GET_EVENTS:
                this.mAsyncRunner.request("me/events", new EventRequestListener());
                break;
           }
    }
    
    
         private class EventRequestListener implements RequestListener {
     
            @Override
            public void onComplete(String response, Object state) {
                try {
                    // process the response here: executed in background thread
                    Log.d(TAG, "Event Response: " + response.toString());
                    final JSONObject json = new JSONObject(response);
                    JSONArray d = json.getJSONArray("data");
     
                    Log.d(TAG, "Number of Events: " + d.length());
                    
                    for (int i = 0; i < d.length(); i++) {
                        JSONObject event = d.getJSONObject(i);
                        FbEvent newEvent = new FbEvent(event.getString("id"),
                                event.getString("name"),
                                event.getString("start_time"),
                                event.getString("end_time"),
                                event.getString("location"));
                        events.add(newEvent);
     
                    }
     
                } catch (JSONException e) {
                    Log.w(TAG, "JSON Error in response");
                }
            }
             
    
    ... Other RequestListener Methods...
    
    }
    
    
    Was der Code macht ist, er erstellt beim MenüOptionklick eine Instanz der EventRequestListener-Klasse, welche den HTTP-Response in eine Klasse hineinschreibt...


    Langer Rede, kurzer Sinn.
    Was ich will ist das diese Instanz nicht per Mausklick sondern periodisch (sagen wir jede 4h kreeiert wird und Daten sammelt).
    Ist das möglich? Wenn ja, wie?
     
  2. sem_thesis, 20.05.2011 #2
    sem_thesis

    sem_thesis Threadstarter Android-Hilfe.de Mitglied

    Kann ich vielleicht den HTTP-Request zu einem Intent umwandeln?
    Danach könnte ich einen periodischen Alarm mit AlarmManager.setrepeating() setzen, der immer wieder diesen Intent aufruft.

    Geht das?