一个App以广播的形式发送天气信息,另一个App接收到天气信息后将更新界面上的天气信息。
时间: 2023-06-12 19:08:07 浏览: 63
这个场景可以使用Android中的BroadcastReceiver来实现。具体步骤如下:
1. 定义一个发送广播的方法,在里面创建一个Intent对象,并添加需要传递的数据。例如:
```java
private void sendWeatherBroadcast(Context context, String weather) {
Intent intent = new Intent();
intent.setAction("com.example.weather");
intent.putExtra("weather", weather);
context.sendBroadcast(intent);
}
```
这里创建了一个Intent对象,并设置了action为"com.example.weather",以及传递了一个名为"weather"的字符串数据。
2. 在接收方的Activity或Fragment中注册广播接收器,并实现onReceive()方法。例如:
```java
public class WeatherActivity extends AppCompatActivity {
private TextView tvWeather;
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("com.example.weather")) {
String weather = intent.getStringExtra("weather");
tvWeather.setText(weather);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_weather);
tvWeather = findViewById(R.id.tv_weather);
}
@Override
protected void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter();
filter.addAction("com.example.weather");
registerReceiver(receiver, filter);
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(receiver);
}
}
```
在这里,我们创建了一个BroadcastReceiver对象,并重写了它的onReceive()方法。当接收到名为"com.example.weather"的广播时,我们从Intent中获取"weather"数据,并更新界面上的天气信息。
3. 在发送方调用sendWeatherBroadcast()方法发送广播即可。例如:
```java
sendWeatherBroadcast(getApplicationContext(), "晴");
```
以上就是使用BroadcastReceiver实现两个App之间通信的基本步骤。需要注意的是,在Android 8.0及以上版本中,需要在清单文件中为广播接收器添加intent-filter才能接收到广播。