建立一个android工程,修改main.xml文件并编写Activity代码,实现三个按钮分别可以发送广播、代码注册广播和代码取消注册广播,点击发送广播按钮可以发送无序广播,若广播接收者已经注册广播,则吐司提示“收到广播”,否则无吐司提示
时间: 2023-12-09 11:03:42 浏览: 69
Android 利用广播发送通知
好的,我会尽力回答你的问题。
首先,我们需要在 `main.xml` 中添加三个按钮,代码如下:
```xml
<Button
android:id="@+id/btn_send_broadcast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="发送广播"
android:onClick="sendBroadcast" />
<Button
android:id="@+id/btn_register_broadcast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="注册广播"
android:onClick="registerBroadcast" />
<Button
android:id="@+id/btn_unregister_broadcast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消注册广播"
android:onClick="unregisterBroadcast" />
```
接下来,我们需要在 `Activity` 中编写三个方法,分别用于发送广播、代码注册广播和代码取消注册广播。代码如下:
```java
public class MainActivity extends AppCompatActivity {
// 定义广播接收者
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// 收到广播后的处理逻辑
Toast.makeText(context, "收到广播", Toast.LENGTH_SHORT).show();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// 发送广播
public void sendBroadcast(View view) {
Intent intent = new Intent("com.example.broadcast.MY_BROADCAST");
sendBroadcast(intent);
}
// 代码注册广播
public void registerBroadcast(View view) {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.example.broadcast.MY_BROADCAST");
registerReceiver(mBroadcastReceiver, intentFilter);
}
// 代码取消注册广播
public void unregisterBroadcast(View view) {
try {
unregisterReceiver(mBroadcastReceiver);
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
}
}
```
在上述代码中,我们首先定义了一个广播接收者 `mBroadcastReceiver`,并在其中实现了接收广播后的处理逻辑。然后,我们编写了三个方法,分别用于发送广播、代码注册广播和代码取消注册广播。
最后,我们需要在 AndroidManifest.xml 文件中注册广播接收者,代码如下:
```xml
<receiver
android:name=".MainActivity$MyBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.example.broadcast.MY_BROADCAST" />
</intent-filter>
</receiver>
```
到这里,我们的三个按钮实现了各自的功能,可以进行无序广播的发送、代码注册广播和代码取消注册广播。如果广播接收者已经注册广播,则会弹出 “收到广播” 的提示消息。
阅读全文