一、发送与接收广播案例
1、创建安卓案例【SendReceiveBroadcast】

2、编写主布局资源文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="20dp"
tools:context=".MainActivity">
<EditText
android:id="@+id/edtMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/input_message"
android:singleLine="true"
android:textSize="20sp" />
<Button
android:id="@+id/btnSendBroadcast"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="doSendBroadcast"
android:text="@string/send_broadcast"
android:textSize="20sp" />
</LinearLayout>
3、编写字符串资源文件strings.xml
<resources>
<string name="app_name">发送与接收广播</string>
<string name="input_message">请输入要广播的消息</string>
<string name="send_broadcast">发送广播的消息</string>
</resources>
4、创建自定义广播接收者

package net.xxr.sendreceivebroadcast;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class CustomReceiver extends BroadcastReceiver {
private final String TAG = "send_receive_broadcast";
private final String INTENT_ACTION_SEND_MESSAGE = "net.xxr.intent.action.SEND_MESSAGE";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(INTENT_ACTION_SEND_MESSAGE)) {
String message = intent.getStringExtra("message");
Log.d(TAG, message);
}
}
}
5、编写主界面类
package net.xxr.sendreceivebroadcast;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import net.xxr.sendreceivebroadcast.CustomReceiver;
import java.util.PrimitiveIterator;
public class MainActivity extends AppCompatActivity {
private final String TAG = "send_receive_broadcast";
private final String INTENT_SEND_MESSAGE = "net.xxr.intent.action.SEND_MESSAGE";
private EditText editMessage;
private int broadcastCount;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editMessage = findViewById(R.id.edtMessage);
CustomReceiver receiver = new CustomReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(INTENT_SEND_MESSAGE);
registerReceiver(receiver, filter);
}
public void doSendBroadcast(View view) {
broadcastCount++;
String message = editMessage.getText().toString();
Intent intent = new Intent();
intent.setAction(INTENT_SEND_MESSAGE);
intent.putExtra("message","第" + broadcastCount + "次广播信息:" + message);
sendBroadcast(intent);
}
}
6、采用动态方式注册广播接收者
- 编写项目清单文件对广播接收者的注册

查看运行结果
 
|