Cloud-Lösungen der Zukunft - Testen!

Revolutionäre Cloud-Technologie, ganz ohne versteckte Kosten. Profitieren Sie von unserer Testphase und entdecken Sie umfassende Funktionen. Der Anmeldeprozess ist transparent und unkompliziert. Starten Sie jetzt Ihre Reise in die Cloud - Kostenfrei!

Android BroadcastReceiver Tutorial

Erfahren Sie, wie Sie mit Android BroadcastReceiver systemweite Ereignisse in Ihrer Anwendung verarbeiten können. Unser Tutorial zeigt Ihnen Schritt für Schritt, wie Sie einen BroadcastReceiver erstellen und registrieren. Starten Sie jetzt und machen Sie Ihre App noch reaktionsfähiger!

Was ist ein Android BroadcastReceiver?

Ein Android BroadcastReceiver ist eine schlafende Komponente, die auf systemweite Broadcast-Ereignisse oder Intents lauscht. Wenn eines dieser Ereignisse auftritt, aktiviert der BroadcastReceiver die Anwendung, indem er entweder eine Statusleistenbenachrichtigung erstellt oder eine Aufgabe ausführt. Im Gegensatz zu Activities hat ein BroadcastReceiver keine Benutzeroberfläche. Er delegiert Aufgaben an Dienste basierend auf den empfangenen Intents.

Wichtige System-Intents

Einige wichtige systemweite Intents sind:

  • android.intent.action.BATTERY_LOW: Zeigt niedrigen Batteriestand an.
  • android.intent.action.BOOT_COMPLETED: Wird nach dem Hochfahren des Systems gesendet.
  • android.intent.action.CALL: Führt einen Anruf aus.
  • android.intent.action.DATE_CHANGED: Datum hat sich geändert.
  • android.intent.action.REBOOT: Gerät wird neu gestartet.
  • android.net.conn.CONNECTIVITY_CHANGE: Netzwerkverbindung wurde geändert oder zurückgesetzt.

BroadcastReceiver in Android einrichten

Um einen BroadcastReceiver einzurichten, sind zwei Schritte erforderlich:

  1. Erstellen eines BroadcastReceivers
  2. Registrieren des BroadcastReceivers

Erstellen eines BroadcastReceivers

Ein Beispiel für die Implementierung eines BroadcastReceivers:

public class MyReceiver extends BroadcastReceiver {
    public MyReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Action: " + intent.getAction(), Toast.LENGTH_SHORT).show();
    }
}

Der BroadcastReceiver ist eine abstrakte Klasse, und die onReceive() Methode wird aufgerufen, wenn ein Ereignis auftritt. Das Intent-Objekt enthält alle zusätzlichen Daten.

Registrieren des BroadcastReceivers

Ein BroadcastReceiver kann auf zwei Arten registriert werden:

    1. In der AndroidManifest.xml:

<receiver android:name=".ConnectionReceiver">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

    1. Programmgesteuert:

IntentFilter filter = new IntentFilter();
filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");

MyReceiver myReceiver = new MyReceiver();
registerReceiver(myReceiver, filter);

Um einen BroadcastReceiver in onStop() oder onPause() der Activity zu deaktivieren, verwenden Sie:

@Override
protected void onPause() {
    unregisterReceiver(myReceiver);
    super.onPause();
}

Senden von Broadcast-Intents

Um einen Intent an alle zugehörigen BroadcastReceiver zu senden:

Intent intent = new Intent();
intent.setAction("com.journaldev.CUSTOM_INTENT");
sendBroadcast(intent);

Vergessen Sie nicht, die oben genannte Aktion im Intent-Filter des Manifests oder programmgesteuert hinzuzufügen.

Beispiel für eine Android-Anwendung

Hier ist ein Beispiel für eine Anwendung, die auf Netzwerkänderungen hört und einen benutzerdefinierten Intent verarbeitet:

activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Send Broadcast"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

MainActivity.java:

public class MainActivity extends AppCompatActivity {
    ConnectionReceiver receiver;
    IntentFilter intentFilter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        receiver = new ConnectionReceiver();
        intentFilter = new IntentFilter("com.journaldev.broadcastreceiver.SOME_ACTION");
    }

    @Override
    protected void onResume() {
        super.onResume();
        registerReceiver(receiver, intentFilter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(receiver);
    }

    public void someMethod(View view) {
        Intent intent = new Intent("com.journaldev.broadcastreceiver.SOME_ACTION");
        sendBroadcast(intent);
    }
}

AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.journaldev.broadcastreceiver">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:label="@string/app_name">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name=".ConnectionReceiver">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>
    </application>
</manifest>

ConnectionReceiver.java:

public class ConnectionReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals("com.journaldev.broadcastreceiver.SOME_ACTION"))
            Toast.makeText(context, "SOME_ACTION is received", Toast.LENGTH_LONG).show();
        else {
            ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
            boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
            Toast.makeText(context, isConnected ? "Network is connected" : "Network is changed or reconnected", Toast.LENGTH_LONG).show();
        }
    }
}

Schlussfolgerung

Mit diesem Wissen können Sie nun eigene BroadcastReceiver erstellen und in Ihre Android-Anwendungen integrieren. Diese ermöglichen es Ihnen, auf systemweite Ereignisse zu reagieren und entsprechend zu handeln.

 

Entfesseln Sie das volle Potenzial Ihrer Android-Apps mit unseren Cloud-Services!

Erleben Sie die Leistungsfähigkeit nahtloser systemweiter Ereignisverarbeitung mit Android BroadcastReceiver. Verbessern Sie die Reaktionsfähigkeit und Leistung Ihrer App durch die Integration unserer fortschrittlichen Cloud-Lösungen. Melden Sie sich noch heute für eine kostenlose Testversion an und sehen Sie, wie unsere Services Ihre Android-Entwicklung auf das nächste Level heben können. Verpassen Sie nicht die Chance, Ihre Anwendungen mit modernster Cloud-Technologie zu optimieren!

Try for free!