发送标准广播
public void onClick(View v)
{
Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST");
// intent.setComponent(new ComponentName("com.example.broadcasttest", "com.example.broadcasttest.MyBroadcastReceiver"));
sendBroadcast(intent);
}
接收者就和上一节的方法接收即可,静态注册不可以接收隐式广播, 而这个就是隐式广播。所以这里直接用动态注册即可,或者改为显式广播。
@Override
public void onReceive(Context context, Intent intent)
{
Toast.makeText(context, "接收到自定义广播", Toast.LENGTH_SHORT).show();
}
private IntentFilter intentFilter;
private NetworkChangeReceiver networkChangeReceiver;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intentFilter = new IntentFilter();
intentFilter.addAction("com.example.broadcasttest.MY_BROADCAST");
networkChangeReceiver = new NetworkChangeReceiver();
registerReceiver(networkChangeReceiver, intentFilter);
findViewById(R.id.button1).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST");
// intent.setComponent(new ComponentName("com.example.broadcasttest", "com.example.broadcasttest.MyBroadcastReceiver"));
sendBroadcast(intent);
}
});
}
发送本地广播
public class MainActivity2
extends AppCompatActivity
{
private IntentFilter intentFilter;
private LocalBroadcastManager localBroadcastManager;
private LocalReceiver localReceiver;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
localBroadcastManager = LocalBroadcastManager.getInstance(this);
findViewById(R.id.button2).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST");
localBroadcastManager.sendBroadcast(intent);
System.out.println("发送一条信息");
}
});
intentFilter = new IntentFilter();
intentFilter.addAction("com.example.broadcasttest.MY_BROADCAST");
localReceiver = new LocalReceiver();
localBroadcastManager.registerReceiver(localReceiver, intentFilter);
}
@Override
protected void onDestroy()
{
super.onDestroy();
localBroadcastManager.unregisterReceiver(localReceiver);
}
class LocalReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent)
{
System.out.println("接收到一条信息");
Toast.makeText(context, "received local broadcast", Toast.LENGTH_SHORT).show();
}
}
}