动态BroadcastReceiver封装

在发送前先写个权限,要不然上线的时候什么检查工具什么的,会说你的广播没有设置权限要你设置.如:

<permission android:name="com.basebroadcastreceiver.receiver_permission" />
<uses-permission android:name="com.basebroadcastreceiver.receiver_permission" />

两个都要com.basebroadcastreceiver这个是你 项目的包名,自己换。

权限好了,那么开始发送广播吧:
Intent mIntent = new Intent(TYPE_UPDATA);
mIntent.putExtra(“a”, “我来了”);
sendBroadcast(mIntent,Manifest.permission.receiver_permission);

既然发送了就应该有接收的,下面这个ReceiverActivity 是我将广播写到里面了,方面继承它的activity使用。
/**
* Copyright (c)
* @file_name ReceiverActivity .java
* @class com.basebroadcastreceiver.BaseActivity
* @create 上午11:22:20
*/
package com.basebroadcastreceiver;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;

/**
*
*


*


* 上午11:22:20
*
* @author ZH-SW-Mengyf
* @version 1.0.0
*/
public class ReceiverActivity extends Activity {
/ * 只用与继承该activity之间进行数据刷新的 /
protected final String TYPE_UPDATA=”up_data”;
private OnReceiverCallbackListener mReceiverListener;

/**
 * 定义一个数据更新广播接收类
 */
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (mReceiverListener!=null) {
            mReceiverListener.receiverUpdata(intent);
        }
    }
};

/**
 * 注册数据更新广播
 */
protected void registerBoradcastReceiver() {
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(TYPE_UPDATA);
    // 注册广播
    registerReceiver(mBroadcastReceiver, intentFilter);
}

/**
 * 设置广播回调监听
 */
protected void setReceiverListener(OnReceiverCallbackListener receiverListener) {
    this.mReceiverListener=receiverListener;
}

/**
 * 实现一个广播回调监听,只有只类才能实现,用于activity之间刷新界面数据的时候用
 * 
 * <p></p>
 * 上午11:46:10
 *
 * @author ZH-SW-Mengyf
 * @version 1.0.0
 */
protected interface OnReceiverCallbackListener{

    /**
     * 广播刷新数据的时候使用
     * @param intent
     */
    void receiverUpdata(Intent intent);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    //销毁监听
    if (mBroadcastReceiver != null) {
        unregisterReceiver(mBroadcastReceiver);
    }
}

}

继承它的activity如何使用呢
public class MainActivity extends ReceiverActivity implements OnReceiverCallbackListener{

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

@Override
public void receiverUpdata(Intent intent) {
Log.d("myf", "来数据了"+intent.getStringExtra("a"));
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值