美文网首页
android 自定义广播

android 自定义广播

作者: 123数字黑洞啊 | 来源:发表于2018-12-25 23:04 被阅读0次

前言:Android自定义广播的文章在各个地方都有很多,但是很多的都是针对8.0以下的,是靠静态注册的方法进行的注册,但是8.0就无效了,而且系统也不报错,但接收者里的方法就是执行不出来,相信很多的初学者都有被此烦恼过吧。

一、自定义广播接收者

public class MyBroadcastReceiverextends BroadcastReceiver {

@Override

    public void onReceive(Context context, Intent intent) {

Toast.makeText(context,"这是一个自定义广播的接收者",Toast.LENGTH_SHORT).show();

    }

}

二、动态注册广播的方法(使用Activity调用)

private IntentFilter intentFilter;

private MyBroadcastReceiver myBroadcastReceiver;

private void receiverTask() {

intentFilter =new IntentFilter();

    intentFilter.addAction("com.example.broadcasttest.MY_BROADCAST");//为自定义的广播添加一个行为,需要注册什么广播就添加什么行为

    myBroadcastReceiver =new MyBroadcastReceiver();

    registerReceiver(myBroadcastReceiver, intentFilter);//register  注册  receiver 接收者    注册一个动态广播

}

三、发送广播(可以使用按钮的点击事件发送广播)

Intent intent =new Intent("com.example.broadcasttest.MY_BROADCAST");

sendBroadcast(intent);

四、取消注册动态广播(在该Activity被销毁时)

@Override

protected void onDestroy() {

super.onDestroy();

    unregisterReceiver(myBroadcastReceiver);

}

附:全部代码

1.Activity代码

public class TaskTwoActivityextends AppCompatActivity {

private ButtonmTaskTwo;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_task_two);

        receiverTask();

        initView();

    }

private void initView() {

mTaskTwo = findViewById(R.id.task_two);

        mTaskTwo.setOnClickListener(new View.OnClickListener() {

@Override

            public void onClick(View v) {

Intent intent =new Intent("com.example.broadcasttest.MY_BROADCAST");

                sendBroadcast(intent);

            }

});

    }

    private IntentFilterintentFilter;

    private MyBroadcastReceivermyBroadcastReceiver;

    private void receiverTask() {

intentFilter =new IntentFilter();

        intentFilter.addAction("com.example.broadcasttest.MY_BROADCAST");/

        myBroadcastReceiver =new MyBroadcastReceiver();

        registerReceiver(myBroadcastReceiver, intentFilter);

    }

@Override

    protected void onDestroy() {

super.onDestroy();

        unregisterReceiver(myBroadcastReceiver);

    }

}

2.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=".BroadcastReceiverTaskTwo.TaskTwoActivity">

        android:id="@+id/task_two"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="开启一条自定义的广播" />

</android.support.constraint.ConstraintLayout>

相关文章

  • BroadcastReceiver

    Android 8.0 之后静态注册广播接收不到自定义广播:解决方法:指定Component.

  • Android广播的安全性

    广播的分类 定义分类 系统广播由Android系统内部自动发出,用户只负责接收 自定义广播由开发者自己定义的广播 ...

  • Android 8.0 系统接收不到广播的解决方案

    最近在做项目的时候自定义个广播,在Android 8.0以下的系统中可以接收到自己发送的广播,但是在Android...

  • android网络监听学习笔记

    网络变化android自带广播、采用广播接收器接收网络变化的监听 自定义广播接收 为了方便全局监听在baseact...

  • Android四大组件之BroadcastReceiver(广播

    1.广播接收者是什么:就是用来接收Android系统和自定义的广播的一个Android组建,是四大组件之一,按注册...

  • 自定义广播接收器

    Android的广播机制方便了开发者接收系统及其他APP发送的广播(开机,电池电量改变等,那么如何自定义一个广播呢...

  • android 自定义广播

    前言:Android自定义广播的文章在各个地方都有很多,但是很多的都是针对8.0以下的,是靠静态注册的方法进行的注...

  • Android广播

    参考:Android总结篇系列:Android广播机制Android广播机制 一. 广播 1. 广播是什么? 广播...

  • 自定义来电显示

    Android 自定义来电显示 自定义来电显示主要完成两个操作: 监听来电广播 使用WindowManager完成...

  • Android自定义权限广播

    扯淡前言 已经很久没有写文章了,最近有人问我怎么断片(篇),我发现...不扯淡了,开始讲自定义权限广播 思路 就是...

网友评论

      本文标题:android 自定义广播

      本文链接:https://www.haomeiwen.com/subject/zzwycqtx.html