Android-Programmierung: Netzwerk
Willemers Informatik-Ecke
Auf diesen Seiten halte ich meine Erfahrungen im Bereich der Android-Programmierung fest, um sie später nachschlagen zu können. Die Ausführungen sind kein vollständiger Kurs, manchmal nur Notizen, aber vielleicht anderen hilfreich. Die Netzwerkprogrammierung hat ein paar Besonderheiten.

Um Erlaubnis bitten

Damit ein Programm im Netzwerk arbeiten darf, muss in der Datei AndroidManifest.xml die Erlaubnis für INTERNET hinterlegt sein.
<uses-permission android:name="android.permission.INTERNET"/>

Service

Für die Kommunikation wird ein eigener Service erstellt. Das wird über das Menü File|New|Service|Service erreicht. Als Namen vergeben wir NetzwerkService. Die Implementierung enthält einen Thread, der die Netzwerkaktion durchführt. Der Thread meldet sich nach getaner Arbeit bei der Activity zurück.
package de.willemer.phpclient;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;

public class NetzwerkService extends Service {
    // private static final String url ="http://10.0.2.2/gast.php";
    private final IBinder netzwerkBinder = new NetzwerkBinder();

    public NetzwerkService() {
    }

    // Wir bauen eine eigene Binder-Klasse
    public class NetzwerkBinder extends Binder {
        public NetzwerkService getService() {
            return NetzwerkService.this;
        }
        public void senden(final Handler threadHandler, String msg) {
            Thread thread = new Thread() {
                @Override
                public void run()  {
                    long error = 0;
                    // error = dieEigentlicheSendeMethode();
                    Message msg = new Message();
                    Bundle bundle = new Bundle();
                    bundle.putLong("stauId", error);
                    msg.setData(bundle);
                    threadHandler.sendMessage(msg);
                }
            };
            thread.start();
        }
    }

    @Override
    public IBinder onBind(Intent intent) {
        return netzwerkBinder;
    }
}