首页 > 系统 > Android > 正文

详解Android之本地广播的实例

2020-02-21 17:26:12
字体:
来源:转载
供稿:网友

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

<?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.example.luobo.mybroadcastreceiver.MainActivity">  <Button    android:id="@+id/send_button"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:text="发送广播"/></android.support.constraint.ConstraintLayout>

AndroidMainfest.aml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"  package="com.example.luobo.mybroadcastreceiver">  <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        android:priority="100">        <action android:name="com.example.luobo.mybroadcastreceiver.LOCAL_BROADCAST"/>      </intent-filter>    </receiver>  </application></manifest>

以上这些是武林技术频道小编给大家介绍的详解Android之本地广播的实例,想了解更多Android知识的朋友,敬请留意js.Vevb.com!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表