android本地广播不生效,Android学习之本地广播使用方法详解

本地广播信息只能在应用程序内部传递,同时广播接收器也只能接收应用程序内部的广播消息。

MainActivity代码

package com.example.luobo.mybroadcastreceiver;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.support.v4.content.LocalBroadcastManager;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

private Button button;

private IntentFilter intentFilter;

private LocalBroadcastManager localBroadcastManager ;

private LocalReceiver localReciiver;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

button = (Button)findViewById(R.id.send_button);

button.setOnClickListener(this);

localBroadcastManager = LocalBroadcastManager.getInstance(this);//使用

intentFilter = new IntentFilter();

intentFilter.addAction("com.example.luobo.mybroadcastreceiver.LOCAL_BROADCAST");

localReciiver = new LocalReceiver();

localBroadcastManager.registerReceiver(localReciiver,intentFilter);

}

@Override

protected void onDestroy() {

super.onDestroy();

localBroadcastManager.unregisterReceiver(localReciiver);

}

@Override

public void onClick(View view) {

Intent intent = new Intent("com.example.luobo.mybroadcastreceiver.LOCAL_BROADCAST");

localBroadcastManager.sendBroadcast(intent);

}

class LocalReceiver extends BroadcastReceiver{

@Override

public void onReceive(Context context, Intent intent) {

Toast.makeText(context,"received local broadcast",Toast.LENGTH_SHORT).show();

}

}

}

首先通过LocalBroadcastManager(本地广播管理类)的getInstance(this)方法获取实例,注册广播消息时是调用localBroadcastManager实例的registerReceiver(参数1,参数2)方法注册(参数1是本地广播接受者,参数2是过滤器只选择接收特定的广播消息),调用localBroadcastManager实例的sendBroadcast(Initent initent)方法发送广播消息。

MyRecevity

package com.example.luobo.mybroadcastreceiver;

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,"Received in MyBroadCastReceiver",Toast.LENGTH_SHORT).show();

abortBroadcast();

}

}

activity_main.xml

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.example.luobo.mybroadcastreceiver.MainActivity">

android:id="@+id/send_button"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="发送广播"/>

AndroidMainfest.aml

package="com.example.luobo.mybroadcastreceiver">

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">

android:name=".MyReceiver"

android:enabled="true"

android:exported="true">

android:priority="100">

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

你可能感兴趣的:(android本地广播不生效)