Android 两个app发送广播完整代码
时间: 2024-10-10 07:16:47 浏览: 64
在Android中,两个独立的应用程序(App A 和 App B)通过广播(Broadcasting)进行通信,通常涉及到以下几个关键步骤。这里我们假设App A 发送广播,App B 接收广播,它们都在同一台设备上运行。
**App A(发送方)**
1. 在App A 中,首先创建一个`Intent`,包含数据和广播的动作:
```java
// 创建意图
Intent sendIntent = new Intent();
sendIntent.setAction("com.example.ACTION_SEND_BROADCAST");
sendIntent.putExtra("data", "12345");
// 发送广播
sendBroadcast(sendIntent);
```
2. 在`AndroidManifest.xml`中声明接收广播的`BroadcastReceiver`:
```xml
<application>
<!-- ... -->
<receiver android:name=".receivers.SendBroadcastReceiver">
<intent-filter>
<action android:name="com.example.ACTION_SEND_BROADCAST" />
</intent-filter>
</receiver>
</application>
```
**App A 的 BroadcastReceiver (`SendBroadcastReceiver.java`)**
```java
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class SendBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 获取附加的数据
String data = intent.getStringExtra("data");
// 这里只是为了展示如何处理,实际应用可能有其他操作
Toast.makeText(context, "Sending broadcast with data: " + data, Toast.LENGTH_SHORT).show();
}
}
```
**App B(接收方)**
在App B 中,你需要创建一个`BroadcastReceiver`来监听来自App A 的广播:
```java
// App B 的 BroadcastReceiver (假设名称为ReceiveBroadcastReceiver)
public class ReceiveBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String receivedData = intent.getStringExtra("data");
Log.d("AppB", "Received broadcast: " + receivedData);
// 打印或进一步处理数据
}
}
// 在App B的AndroidManifest.xml中添加接收BroadcastReceiver
<receiver android:name=".receivers.ReceiveBroadcastReceiver">
<intent-filter>
<action android:name="com.example.ACTION_SEND_BROADCAST" />
</intent-filter>
</receiver>
```
**相关问题--:**
1. 如何在App A 中动态改变广播的内容?
2. 如果希望广播仅在某些条件下发送,应该如何实现?
3. 怎么处理接收不到广播的情况?
阅读全文