zoukankan      html  css  js  c++  java
  • 035 Android 广播(BroadCastReceiver)

    1.介绍

    2.实现方法

    3.注册广播

    (1)静态广播

    在AndroidManifest.xml文件中注册广播

    <intent-filter>为过滤器
    <receiver android:name=".MyBroadCast1"></receiver>
            <receiver android:name=".MyBroadCast2">
                <intent-filter>
                    <action android:name="com.lucky"></action>
                </intent-filter>
            </receiver>

    (2)动态广播

    4.静态广播代码

    (1)主界面

    package com.lucky.test40broadcastreceiver;
    
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    
    public class MainActivity extends AppCompatActivity {
        Button button1;
        Button button2;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            button1=findViewById(R.id.button);
            button2=findViewById(R.id.button2);
            button1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent=new Intent(MainActivity.this,MyBroadCast1.class);
                    sendBroadcast(intent); //发送广播
                }
            });
            button2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //设置Action为com.lucky,会在AndroidManifest.xml中的receiver中启动action为com.lucky的广播
                    Intent intent=new Intent();
                    intent.setAction("com.lucky");
                    sendBroadcast(intent);
                }
            });
        }
    }

    (2)广播接收器1(采用Toast语句进行提示)

    package com.lucky.test40broadcastreceiver;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.widget.Toast;
    
    //MyBroadCast1广播接收器
    public class MyBroadCast1 extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context,"接收到广播",Toast.LENGTH_SHORT).show();
        }
    }

    (3)广播接收器2(采用通知的方式进行提示)

    package com.lucky.test40broadcastreceiver;
    
    import android.app.Notification;
    import android.app.NotificationManager;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Build;
    import android.support.annotation.RequiresApi;
    
    public class MyBroadCast2 extends BroadcastReceiver {
        @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
        @Override
        public void onReceive(Context context, Intent intent) {
            //采用通知的形式
            NotificationManager manager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
            Notification.Builder builder=new Notification.Builder(context);
            builder.setSmallIcon(R.mipmap.ic_launcher); //给通知设置图标
            builder.setTicker("广播消息"); //设置提示消息
            builder.setContentTitle("您有一条广播消息");//设置内容标题
            builder.setContentText("hello lucky");    //设置通知内容
            manager.notify(0x01,builder.build()); //让通知显示
        }
    }

    5.动态广播

    (1)主界面

    package com.lucky.test41broadcastreceiver2;
    
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    
    public class MainActivity extends AppCompatActivity {
        Button button1;
        MyBroadCast myBroadCast;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            button1=findViewById(R.id.button);
    
            //注册广播
            myBroadCast=new MyBroadCast(); //实例化广播接收器
            IntentFilter intentFilter=new IntentFilter();//实例化一个过滤器
            intentFilter.addAction("com.lucky"); //添加action来明确接收哪种类型的广播
            registerReceiver(myBroadCast,intentFilter);//注册广播
    
            button1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //发送广播
                    Intent intent=new Intent();
                    intent.setAction("com.lucky");
                    sendBroadcast(intent);
                }
            });
        }
    }

    (2)广播接收器

    package com.lucky.test41broadcastreceiver2;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.widget.Toast;
    
    public class MyBroadCast extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context,"hello lucky",Toast.LENGTH_SHORT).show();
        }
    }
  • 相关阅读:
    使用某些 DOCTYPE 时会导致 document.body.scrollTop 失效
    VB.NET 笔记1
    知识管理系统Data Solution研发日记之一 场景设计与需求列出
    知识管理系统Data Solution研发日记之五 网页下载,转换,导入
    折腾了这么多年的.NET开发,也只学会了这么几招 软件开发不是生活的全部,但是好的生活全靠它了
    分享制作精良的知识管理系统 博客园博客备份程序 Site Rebuild
    知识管理系统Data Solution研发日记之四 片段式数据解决方案
    知识管理系统Data Solution研发日记之二 应用程序系列
    知识管理系统Data Solution研发日记之七 源代码与解决方案
    知识管理系统Data Solution研发日记之三 文档解决方案
  • 原文地址:https://www.cnblogs.com/luckyplj/p/10523535.html
Copyright © 2011-2022 走看看