动态注册 MainActivity.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 private IntentFilter intentFilter; private NetworkChangeReceiver networkChangeReceiver; onCreate { intentFilter = new IntentFilter(); intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE" ); networkChangeReceiver = new NetworkChangeReceiver(); registerReceiver(networkChangeReceiver, intentFilter); } class NetworkChangeReceiver extends BroadcastReceiver { @Override public void onReceive (Context context, Intent intent) { ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isAvailable()) { Toast.makeText(context, "network is available" , Toast.LENGTH_SHORT).show(); } else { Toast.makeText(context, "network is unavailable" , Toast.LENGTH_SHORT).show(); } } } @Override protected void onDestroy () { super .onDestroy(); Log.d(TAG, "onDestroy" ); unregisterReceiver(networkChangeReceiver); } }
AndroidManifest.xml 添加权限1 <uses-permission android:name ="android.permission.ACCESS_NETWORK_STATE" />
静态注册 应用场景 接受开机广播 右击 包名 -> New -> Other -> BroadcastReceiver enabled = true 表示是否启用该 BoardcastReceiver exported = ture 表示允许接受本程序以外的 Boardcast
BootCompleteReceiver.java 1 2 3 4 5 6 7 8 9 10 public class BootCompleteReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO: This method is called when the BroadcastReceiver is receiving // an Intent broadcast. // throw new UnsupportedOperationException("Not yet implemented"); Toast.makeText(context, "Boot Complete", Toast.LENGTH_SHORT).show(); } }
AndroidManifest.xml 1 2 3 4 5 6 7 8 9 10 11 12 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <application <receiver android:name=".BootCompleteReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </application>
自定义标准广播 应用场景 点击 Mainactivity 的 Button ,发送广播 然后 App 接收到并弹出 Toast
Mainactivity.java 1 2 3 4 5 6 7 8 9 // Example 3 MY_BROADCAST Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent("com.iyounix.android.a010broadcasts.MY_BROADCAST"); sendBroadcast(intent); } });
MyBroadcastReceiver.java public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "received in Younix BoardcastReceiver",Toast.LENGTH_SHORT).show();
}
}
AndroidManifest.xml 1 2 3 4 5 6 7 <receiver android:name=".MyBroadcastReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="com.iyounix.android.a010broadcasts.MY_BROADCAST"/> </intent-filter> </receiver>