按照提示编写代码:建立一个android工程,修改main.xml文件并编写Activity代码,实现三个按钮分别可以发送广播、代码注册广播和代码取消注册广播,点击发送广播按钮可以发送无序广播,若广播接收者已经注册广播,则吐司提示“收到广播”,否则无吐司提示。
时间: 2024-03-25 12:37:25 浏览: 194
android开发 广播实现Activity
4星 · 用户满意度95%
很高兴为您解答这个问题!以下是示例代码:
首先,我们需要在`main.xml`文件中添加三个按钮:
```xml
<Button
android:id="@+id/btn_send_broadcast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="发送广播" />
<Button
android:id="@+id/btn_register_broadcast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="注册广播" />
<Button
android:id="@+id/btn_unregister_broadcast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消注册广播" />
```
接下来,在`MainActivity.java`文件中编写代码实现这些按钮的功能:
```java
public class MainActivity extends AppCompatActivity {
private BroadcastReceiver mReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 发送广播按钮
Button btnSendBroadcast = findViewById(R.id.btn_send_broadcast);
btnSendBroadcast.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.example.broadcast.MY_BROADCAST");
sendBroadcast(intent);
}
});
// 注册广播按钮
Button btnRegisterBroadcast = findViewById(R.id.btn_register_broadcast);
btnRegisterBroadcast.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mReceiver == null) {
mReceiver = new MyReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("com.example.broadcast.MY_BROADCAST");
registerReceiver(mReceiver, filter);
Toast.makeText(MainActivity.this, "已注册广播", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "已经注册广播", Toast.LENGTH_SHORT).show();
}
}
});
// 取消注册广播按钮
Button btnUnregisterBroadcast = findViewById(R.id.btn_unregister_broadcast);
btnUnregisterBroadcast.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mReceiver != null) {
unregisterReceiver(mReceiver);
mReceiver = null;
Toast.makeText(MainActivity.this, "已取消注册广播", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "还没有注册广播", Toast.LENGTH_SHORT).show();
}
}
});
}
private class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "收到广播", Toast.LENGTH_SHORT).show();
}
}
}
```
在这个示例中,我们创建了一个`MyReceiver`类来处理广播接收逻辑。在注册广播按钮的监听器中,我们使用`registerReceiver()`方法来注册这个接收器,并指定要接收的广播类型。当用户点击发送广播按钮时,我们使用`sendBroadcast()`方法向系统发送一个广播。在取消注册广播按钮的监听器中,我们使用`unregisterReceiver()`方法来取消注册接收器。
请注意,我们使用了一个成员变量`mReceiver`来保存接收器的状态。这样,我们可以在取消注册广播按钮的监听器中检查接收器是否已经注册,如果是,则取消注册。
希望这个示例代码可以帮助到您!
阅读全文