该文章只是简单介绍静态广播的注册方法,方便读者理解广播,在实际应用中静态广播使用较少。
一、添加一个类,继承广播接收者BroadcastReceiver
添加一个类,继承广播接收者类BroadcastReceiver,BroadcastReceiver是一个抽象类,该抽象类里有一个抽象方法:
public abstract void onReceive(Context var1, Intent var2);
该方法是回调方法,在受到广播后会自动调用该方法,重写该方法后,添加一个日志打印语句,用来提示收到广播。
完整代码:
package Broad;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class MyBroad extends BroadcastReceiver {
public final static String TAG = "test;
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG,"接收到广播");
}
}
二、在清单文件中注册
之所以叫静态广播,就是因为在清单文件中注册好了,不需要用Java代码注册。
打开清单文件AndroidManifest.xml,在application中添加如下代码:
<receiver android:name="Broad.MyBroad">
<intent-filter>
<action
android:name="test"/>
</intent-filter>
</receiver>
其中第一个name属性为上一步创建的类所在的包名和类名,第二个name属性自定义且需保证在该应用中唯一。
三、发送广播
创建一个java文件继承Activity,重写onCreate,添加一个按钮并实例化该按钮,给该按钮注册监听,在回调方法里写发送广播代码。
完整代码:
package Broad;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.widget.Button;
import com.example.test_one.R;
public class SendBroad extends AppCompatActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_send_broad);
button = findViewById(R.id.send_broad_button);
button.setOnClickListener(v->{
Intent intent = new Intent();
intent.setAction(MyBroad.TAG);//使用唯一的名字
sendBroadcast(intent);
});
}
}
运行后打开日志栏Logcat,点击按钮会发现打印了日志,表示成功发送广播且收到广播。