Android 广播接受者

不飞则已,一飞冲天;不鸣则已,一鸣惊人。这篇文章主要讲述Android 广播接受者相关的知识,希望能为你提供帮助。
广播也是通过intent来传递的。
        广播分为有序广播和标准广播。

                标准广播是发送广播后,所有的广播接受者都可以去接收。

                有序广播是发送广播后,由高优先级的先接收广播,处理后再往后广播,同时高优先级的接受者可以中断广播。



                广播注册可以分为动态注册和静态注册。下面就先将静态注册。静态注册是新建广播接收者时,是通过new-----> other-------> Brodcast Receiver来实现的。AS会自动帮我们在Manifext.xml里注册好,我们只需要添加intent-filter及在里面加入action即可。
       

        下面的例子是静态注入,发送一条标准广播,然后接收。

       

        1、MainActivity

       

package  com.yuanlp.sendbroadcast; import  android.content.Intent; import  android.os.Bundle; import  android.support.v7.app.AppCompatActivity; import  android.view.View; public  class  MainActivity  extends  AppCompatActivity  {        @Override         protected  void  onCreate(Bundle  savedInstanceState)  {                 super.onCreate(savedInstanceState);                 setContentView(R.layout.activity_main);         }        public  void  click(View  view){                 Intent  intent=new  Intent("com.yuanlp.sendBroadcast.MY_BROADCAST");   //设置intent的action                 sendBroadcast(intent);     //发送广播         } }

        2、 activity_main.xml里
       
< ?xml  version="1.0"  encoding="utf-8"?> < android.support.constraint.ConstraintLayout         xmlns:android="http://schemas.android.com/apk/res/android"         xmlns:app="http://schemas.android.com/apk/res-auto"         xmlns:tools="http://schemas.android.com/tools"         android:layout_width="match_parent"         android:layout_height="match_parent"         tools:context="com.yuanlp.sendbroadcast.MainActivity">         < Button                 android:id="@+id/button"                 android:layout_width="wrap_content"                 android:layout_height="wrap_content"                 android:onClick="click"                 android:text="发送广播"                 tools:layout_editor_absoluteX="137dp"                 tools:layout_editor_absoluteY="136dp"/> < /android.support.constraint.ConstraintLayout>

          3、MyReceiver
       
package  com.yuanlp.sendbroadcast; import  android.content.BroadcastReceiver; import  android.content.Context; import  android.content.Intent; import  android.widget.Toast; public  class  MyReceiver  extends  BroadcastReceiver  {        @Override         public  void  onReceive(Context  context,  Intent  intent)  {                 Toast.makeText(context,"接收到广播",Toast.LENGTH_SHORT).show();         } }

                4、Manifext.xml

       
< ?xml  version="1.0"  encoding="utf-8"?> < manifest  xmlns:android="http://schemas.android.com/apk/res/android"                     package="com.yuanlp.sendbroadcast">         < application                 android:allowBackup="true"                 android:icon="@mipmap/ic_launcher"                 android:label="@string/app_name"                 android:roundIcon="@mipmap/ic_launcher_round"                 android:supportsRtl="true"                 android:theme="@style/AppTheme">                 < activity  android:name=".MainActivity">                         < intent-filter>                                 < action  android:name="android.intent.action.MAIN"/>                                 < category  android:name="android.intent.category.LAUNCHER"/>                         < /intent-filter>                 < /activity>                 < receiver                         android:name=".MyReceiver"                         android:enabled="true"                         android:exported="true">                         < intent-filter>                                 < action  android:name="com.yuanlp.sendBroadcast.MY_BROADCAST"> < /action>                         < /intent-filter>                 < /receiver>         < /application> < /manifest>

        运行程序后,在点击按钮后,自定义的广播 接受者会受到广播,并弹出toast

【Android 广播接受者】本文出自 “YuanGuShi” 博客,请务必保留此出处http://cm0425.blog.51cto.com/10819451/1942565

    推荐阅读