Najlepszy samouczek Android odbiornik broadcast (Broadcast Odbiorniki) W 2024 r. W tym samouczku możesz dowiedzieć się Tworzenie odbiornik rozgłaszania,Zarejestrowany odbiorca przekazu,Niestandardowe nadawane intencją,Przykłady,
Odbiornik transmisji w odpowiedzi na komunikat rozgłoszeniowy do innych aplikacji lub systemów. Komunikaty te są czasami nazywane zdarzenia lub intencje. Na przykład, aplikacja może zainicjować transmisję, aby umożliwić inne zastosowania, aby kierować część danych została załadowana do urządzenia i można je stosować. Taki odbiornik transmisji mogą określić odpowiednie działania w celu przechwycenia tych komunikatów.
Istnieją dwa ważne kroki, aby intencje systemu nadawania audycji z odbiornikiem do pracy.
Jest to dodatkowy krok do osiągnięcia zamiarów zwyczaju, trzeba tworzyć i nadawać te zamiary.
Odbiornik transmisji musi być realizowany jako klasa podklasa BroadcastReceiver i zastąpić onReceive () metoda otrzyma zamiarem obiekt jako parametr komunikatu.
public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show(); } }
Pismem zarejestrowanym w AndroidManifest.xml odbiornika do odbioru transmisji broadcast zamiar rozwijać. Załóżmy, że chcemy, aby zarejestrować MyReceiver do monitorowania systemu generowane zdarzenie ACTION_BOOT_COMPLETED. To zdarzenie jest wydawane, gdy proces rozpoczęty przez system Android jest kompletna.
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <receiver android:name="MyReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"> </action> </intent-filter> </receiver> </application>
Teraz, gdy urządzenie Android jest aktywowany, będzie transmitowana przechwytujące odbiornik MyReceiver i onReceive () realizowany logika będą realizowane.
Istnieje wiele zdarzenia generowane przez system jest zdefiniowane jako klasa zamiar statycznej wartości stałej. Poniższa tabela zawiera listę ważnych zdarzeń systemowych.
Stałe Event | opis |
---|---|
android.intent.action.BATTERY_CHANGED | Trwała nadawczych, w tym stanu naładowania akumulatora, poziomu i innych informacji. |
android.intent.action.BATTERY_LOW | Niski stan baterii urządzenie identyfikacyjne. |
android.intent.action.BATTERY_OKAY | Wskazuje poziom naładowania baterii jest niski, to teraz jest dobry. |
android.intent.action.BOOT_COMPLETED | Po zakończeniu rozruchu systemu nadawane ponownie. |
android.intent.action.BUG_REPORT | Wyświetlacz Raport aktywności bug. |
android.intent.action.CALL | Zadzwoń do kogoś, aby wykonać określone dane. |
android.intent.action.CALL_BUTTON | Użytkownicy kliknąć na przycisk "Połącz", aby otworzyć aplikację Zadzwoń lub innego odpowiedniego pokrętła interfejsu. |
android.intent.action.DATE_CHANGED | Data zmiany. |
android.intent.action.REBOOT | restart urządzenia. |
Jeśli chcesz, aby aplikacja do generowania i wysyłania niestandardowego intencji, trzeba tworzyć i przekazywać te intencje w zajęciach poprzez sendBroadcast (). Jeśli używasz sendStickyBroadcast metoda (Intent) ma być trwałe (lepkie), co oznacza, że intencją wydane po zakończeniu transmisji została utrzymana.
public void broadcastIntent(View view) { Intent intent = new Intent(); intent.setAction("cn.uprogrammer.CUSTOM_INTENT"); sendBroadcast(intent); }
intencje cn.uprogrammer.CUSTOM_INTENT jak zamiarów, zanim będziemy mogli produkować ten sam system rejestracji jest zarejestrowany.
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <receiver android:name="MyReceiver"> <intent-filter> <action android:name="cn.uprogrammer.CUSTOM_INTENT"> </action> </intent-filter> </receiver> </application>
Ten przykład wyjaśni jak stworzyć odbiornik rozgłaszania do przechwytywania niestandardową intencji. Po zapoznaniu się z zamiarem niestandardowego można zaprogramować aplikację do przechwytywania intencji wygenerowany przez system. Pozwól nam wykonać następujące kroki, aby zmodyfikować Android aplikacji Hello World Przykłady sekcji stworzyliśmy.
krok | opis |
---|---|
1 | Użyj Android Studio do tworzenia aplikacji Android i nazwisko broadcastreceiver i umieszczone pod Hello World rozdziale Przykłady cn.uprogrammer.broadcastreceiver pakiet. |
2 | Główne działania zmodyfikować plik MainActivity.java dodać metodę broadcastIntent (). |
3 | Utwórz nowy plik Java o nazwie MyReceiver.java w pakiecie cn.uprogrammer.broadcastreceiver do zdefiniowania odbiorcy przekazu. |
4 | Aplikacja może przetwarzać jeden lub więcej niestandardowych lub zamiaru systemu, bez żadnych ograniczeń. Każdy zamiar chcesz zabronić trzeba użyć <Odbiornik pl. /> tag zarejestrowany w AndroidManifest.xml. |
5 | Modyfikacja res / layout / file activity_main.xml zawiera treść domyślną nadawania przycisk intencji. |
6 | Nie trzeba zmodyfikować plik ciąg, Android Studio będzie zwracać uwagę plik string.xml. |
7 | Uruchom emulator systemu Android, aby uruchomić aplikację i sprawdzić wyniki zmian wprowadzonych do wniosku. |
Oto treść zmodyfikowanego pliku głównego Aktywność src / cn.uprogrammer.broadcastreceiver / MainActivity.java dnia. Ten plik zawiera każda podstawowego podejścia cyklu życia. Mamy metody broadcastIntent () do transmisji zdarzeń niestandardowych dodał.
package cn.uprogrammer.broadcastreceiver; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.content.Intent; import android.view.View; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } // 广播自定义意图 public void broadcastIntent(View view){ Intent intent = new Intent(); intent.setAction("cn.programmer.CUSTOM_INTENT"); sendBroadcast(intent); } }
Oto co src / cn.uprogrammer.broadcastreceiver / MyReceiver.java się z:
package cn.uprogrammer.broadcastreceiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "检测到意图。", Toast.LENGTH_LONG).show(); } }
Następnie zmodyfikować plik AndroidManifest.xml. Tutaj dodając <Odbiornik pl. /> tag dołączyć nasz odbiornik audycji:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.uprogrammer.broadcastreceiver" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="22" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <receiver android:name="MyReceiver"> <intent-filter> <action android:name="cn.programmer.CUSTOM_INTENT"> </action> </intent-filter> </receiver> </application> </manifest>
Oto zawartość pliku res / layout / activity_main.xml, w tym nadawanych intencyjny niestandardowych przycisków.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="广播实例" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:textSize="30dp" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="www.uprogrammer.cn" android:textColor="#ff87ff09" android:textSize="30dp" android:layout_above="@+id/imageButton" android:layout_centerHorizontal="true" android:layout_marginBottom="40dp" /> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageButton" android:src="@drawable/ic_launcher" android:layout_centerVertical="true" android:layout_centerHorizontal="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button2" android:text="广播意图" android:onClick="broadcastIntent" android:layout_below="@+id/imageButton" android:layout_centerHorizontal="true" /> </RelativeLayout>
Oto treść RES / wartości / pliku strings.xml definiuje dwie nowe stałe.
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Android Broadcast Receiver</string> <string name="action_settings">Settings</string> <string name="menu_settings">Settings</string> <string name="title_activity_main">Main Activity</string> </resources>
Załóżmy, wystarczy uruchomić zmodyfikowanej aplikacji Hello World!. Zakładam, że utworzyliśmy AVD podczas środowiska instalacji. Otwórz projekt w aktywnym pliku, kliknij przycisk na pasku narzędzi Ikona, aby uruchomić aplikację w Android Studio. Android Studio zainstalować aplikację na AVD i uruchamia go. Jeśli wszystko pójdzie dobrze, to zostanie wyświetlona w oknie emulatora w następujący sposób:
Teraz kliknij na przycisk "Broadcast intent" nadawać nasze własne intencje. Będzie ona transmitowana nasz własny intencji "cn.programmer.CUSTOM_INTENT", przechwytując i wykonanie kodu realizowane w naszym odbiorniku nadawanego MyReceiver zarejestrowanego w. Tost pojawi się w dolnej części symulatora. W następujący sposób:
Można spróbować wdrożyć inny odbiornik rozgłaszania do przechwytywania intencji generowane przez system, takich jak uruchamiania systemu, zmiany terminów i niskim zużyciu energii.