Senden Sie die Absicht vom Dienst zur Aktivität

Ich versuche das Ergebnis von einer zurückzugebenIntentSerivce zummainactivity mit einer Absicht, aber ich kann es nicht zum Laufen bringen. DasIntentService erhält die absicht von der aktivität ohne probleme, macht das ding und bekommt eineJSONstring. Jetzt bleibt nur noch das Problem, diesen String an die Aktivität zurückzusenden.

Hier ist die Methode in der Hauptaktivität:

public String RTConn(String query){
    System.out.println("Querying Rotten Tomatoes.");
    Intent rtIntent = new Intent(MainActivity.this, RTConnection.class);
    rtIntent.putExtra("query", query);
    bindService(rtIntent, RTConnection, Context.BIND_AUTO_CREATE);
    startService(rtIntent);
    String json = getIntent().getStringExtra("json");
    return json;

Und hier ist der IntentService:

public void onStart(Intent intent, int startId){
    System.out.println("intent Received");
    String jsonString = rottenTomatoesSearch(intent.getStringExtra("query"));
    Intent RTRetur = new Intent(RTConnection.this, MainActivity.class);
    RTRetur.putExtra("json", jsonString);
    startActivity(RTRetur);
}

Offensichtlich funktioniert die startActivity nicht, aber was kann man sonst noch verwenden? (Ich würde lieber keinen Rundfunkempfänger verwenden). Grüße Peter L.

Aktualisieren

So sieht die MainActivity aus:

public static final String RECEIVE_JSON = "student.kau.RECEIVE_JSON";
private BroadcastReceiver RTReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        System.out.println("broadcast Received: "+intent.getAction());
        if(intent.getAction().equals(RECEIVE_JSON)){
            System.out.println("JSON Received.");
            String serviceJsonString = intent.getStringExtra("json");
        }
    }
};

Dieser Code ist der onCreate:

LocalBroadcastManager bManager = LocalBroadcastManager.getInstance(this);
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(RECEIVE_JSON);
    bManager.registerReceiver(RTReceiver, intentFilter);

Dies ist die Methode:

public void onStart(Intent intent, int startId){
    System.out.println("intent Received");
    String query = intent.getStringExtra("query");
    String jsonString = rottenTomatoesSearch(query);
    System.out.println("Fetching done");
    Intent RTRetur = new Intent(MainActivity.RECEIVE_JSON);
    System.out.println("action: "+RTRetur.getAction());
    RTRetur.putExtra("json", jsonString);
    sendBroadcast(RTRetur);

}

Der letzte Trace in logcat ist derSystem.out.println("action: "+RTRetur.getAction()");

-action: 

    student.kau.RECEIVE_JSON

Antworten auf die Frage(1)

Ihre Antwort auf die Frage