Android 中如何发送自定义广播

栏目: Android · 发布时间: 6年前

先新建一个广播接收器用于来接收自定义的广播:

public class MyReceiver extends BroadcastReceiver {
    public MyReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"接收到自定义的广播",Toast.LENGTH_SHORT).show();
    }
}

然后修改 AndroidManifest.xml 文件,注册要监听的自定义广播(假设是 net.deniro.android.MY_BROADCAST):

<receiver
    android:name=".MyReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="net.deniro.android.MY_BROADCAST"/>
    </intent-filter>

</receiver>

接着在主布局文件中,添加一个按钮作为发送广播的触发点:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="net.deniro.android.mybroadcastreceiver.MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="发送广播"></Button>
</RelativeLayout>

最后修改主活动的代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sendBroadcast(new Intent("net.deniro.android.MY_BROADCAST"));

            }
        });
    }
}

这里通过 sendBroadcast() 方法来发送广播,这样所有监听这个广播的接收器就会收到消息。

Android 中如何发送自定义广播

接收到自定义广播

2 发送有序广播

广播是一种可以跨进程进行通信的方式,因此我们在应用程序中发出的广播,其他的应用程序也可以收到。

我们新建一个项目,然后再自定义一个广播接收器:

public class AnotherReceiver extends BroadcastReceiver {
    public AnotherReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"接收到自定义的广播(AnotherReceiver)",Toast.LENGTH_SHORT).show();

    }
}

代码与之前的接收器代码类似,只是弹出的消息内容不同。

接着在 AndroidManifest.xml 文件中为接收器注册要监听的消息:

<receiver
    android:name=".AnotherReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="net.deniro.android.MY_BROADCAST" />
    </intent-filter>
</receiver>

最后把这个项目安装到模拟器上,然后重新回到上一个项目 app,点击【发送广播】按钮,这时就会弹两次提示信息。

Android 中如何发送自定义广播

新的程序接收到广播消息

现在我们试试发送有序广播。 回到前面的项目,修改 Activity 中的代码:

sendOrderedBroadcast((new Intent("net.deniro.android.MY_BROADCAST")),null);

sendOrderedBroadcast() 方法接收两个参数,第一个是 Intent,第二个是与权限相关的字符串,这里我们传入 null。

通过 AndroidManifest.xml 文件中的 android:priority ,可以设定广播接收器的先后顺序,我们为第一个接收器设定  android:priority

<receiver
    android:name=".MyReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter android:priority="100">
        <action android:name="net.deniro.android.MY_BROADCAST" />
    </intent-filter>

</receiver>

android:priority 的值越大,优先级就越高。

调用 abortBroadcast() 方法,就可以截断这条广播啦。

来源:  https://www.jianshu.com/p/225ead6f30ad


以上所述就是小编给大家介绍的《Android 中如何发送自定义广播》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

别具光芒

别具光芒

李烨 / 人民邮电出版社 / 2006-11 / 55.00元

本书面向实用,提供了大量网页设计与制作的细节图解,由浅入深地讲解网页制作的步骤与方法,同时介绍了Web标准以及使用目前流行的“层”布局方式,并结合多个实例讲解了采用层叠样式表与层布局相结合制作网页的方法。   本书给出了几大典型网页制作实例,包括小型企业网站、电子相册网站、网络电台、网上商店、旅游网站等,这些实例基本上覆盖到了常用的网页设计与制作知识。本书在详细讲解各个实例的过程中,不仅介绍......一起来看看 《别具光芒》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

MD5 加密
MD5 加密

MD5 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具