android代码创建广播发送页面和广播接收器,演示如何发送广播和接收来自系统的广播。
时间: 2023-09-29 14:08:32 浏览: 46
好的,下面是一个简单的示例,演示如何在 Android 中创建广播发送页面和广播接收器,以及如何发送广播和接收来自系统的广播。
1. 创建发送广播的页面
在 Android 项目中创建一个新的 Activity,并添加以下代码:
```java
public class MainActivity extends AppCompatActivity {
private static final String CUSTOM_ACTION = "com.example.broadcasttest.CUSTOM_ACTION";
private Button mSendButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSendButton = findViewById(R.id.send_button);
mSendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(CUSTOM_ACTION);
intent.putExtra("message", "Hello, receivers!");
sendBroadcast(intent);
}
});
}
}
```
在上面的代码中,我们定义了一个常量 `CUSTOM_ACTION`,表示我们要发送的自定义广播的 Action。然后,在 Activity 的 `onCreate()` 方法中,我们获取了发送按钮的引用,并设置了一个点击监听器。当用户点击按钮时,我们创建了一个包含自定义 Action 和一条消息的 Intent,并使用 `sendBroadcast()` 方法将其发送出去。
2. 创建接收广播的页面
在 Android 项目中创建一个新的 Activity,并添加以下代码:
```java
public class ReceiverActivity extends AppCompatActivity {
private TextView mMessageTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_receiver);
mMessageTextView = findViewById(R.id.message_text_view);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_POWER_CONNECTED);
intentFilter.addAction(MainActivity.CUSTOM_ACTION);
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action != null) {
switch (action) {
case Intent.ACTION_POWER_CONNECTED:
mMessageTextView.setText("Power connected!");
break;
case MainActivity.CUSTOM_ACTION:
String message = intent.getStringExtra("message");
mMessageTextView.setText(message);
break;
}
}
}
};
registerReceiver(broadcastReceiver, intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(broadcastReceiver);
}
}
```
在上面的代码中,我们定义了一个 `BroadcastReceiver`,用于接收来自系统和我们自己发送的广播。我们将其注册到了 `onCreate()` 方法中,并为其设置了一个 IntentFilter,其中包含我们自己的自定义 Action 和系统的 `Intent.ACTION_POWER_CONNECTED` Action。当我们接收到广播时,我们根据 Action 进行判断,并根据需要更新 UI。
注意:在 Activity 销毁时,我们需要取消注册广播接收器,以避免内存泄漏。
3. 在 AndroidManifest.xml 中声明 ReceiverActivity
在 AndroidManifest.xml 文件中添加以下代码:
```xml
<activity android:name=".MainActivity" />
<activity android:name=".ReceiverActivity" />
```
这样系统就能够识别我们创建的两个 Activity。
4. 运行应用程序
现在我们可以运行应用程序并测试广播发送和接收功能。点击发送按钮后,在接收页面上应该会显示我们发送的消息。此外,如果你连接了一个充电器,接收页面也应该会显示 "Power connected!" 的消息。