android 48 广播

系统开始重启会发送开机重启广播,电量低的时候会发送电量低的广播,广播注册有2种:系统说明文件xml注册和Java代码注册,前者是静态注册(全局注册)后者是动态注册(依赖于当时组建,组件销毁就收不到广播了)。

Activity.java

package com.sxt.day07_04;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;

public class MainActivity extends Activity {
    MyReceiver2 mReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        registerReceiver();
        setListener();
    }

    private void setListener() {
        sendBroadcast1ClickListener();
        sendBroadcast2ClickListener();
    }

    private void sendBroadcast2ClickListener() {
        findViewById(R.id.btnSendBroadcast_2).setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent=new Intent("com.sxt.day07_04.MyReceiver2");//
                intent.putExtra("key", "hello android!");
                sendBroadcast(intent);
            }
        });
    }

    private void sendBroadcast1ClickListener() {
        findViewById(R.id.btnSendBroadcast_1).setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent=new Intent("com.sxt.day07_04.MyReceiver1");
                intent.putExtra("key", "hello java!");
                sendBroadcast(intent);
            }
        });
    }

    //java类注册的广播接收者
    private void registerReceiver() {
        mReceiver=new MyReceiver2();
        IntentFilter filter=new IntentFilter();//意图过滤器
        filter.addAction("com.sxt.day07_04.MyReceiver2");//广播的字符串
        registerReceiver(mReceiver, filter);
    }

    class MyReceiver2 extends BroadcastReceiver{
        @Override
        //收到广播执行的方法
        public void onReceive(Context context, Intent intent) {
            Log.i("main","MyReceiver2.onReceive():"+intent.getStringExtra("key"));
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //Activity退出的时候取消广播的注册,释放资源.
        unregisterReceiver(mReceiver);
    }
}

广播1.java

package com.sxt.day07_04;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class MyReceiver1 extends BroadcastReceiver {

    @Override
    //收到广播后执行的方法
    public void onReceive(Context context, Intent intent) {
        Log.i("main","MyReceiver1.onReceive():"+intent.getStringExtra("key"));
    }

}

系统描述文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.sxt.day07_04"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.sxt.day07_04.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        注册全局广播接收者
        <receiver android:name="com.sxt.day07_04.MyReceiver1">   广播接收者类
            <intent-filter>
                <action android:name="com.sxt.day07_04.MyReceiver1"/>   广播的字符串是这个就可以接收广播
            </intent-filter>
        </receiver>
    </application>

</manifest>
时间: 2024-08-15 11:35:31

android 48 广播的相关文章

Android 48个小知识

1.判断sd卡是否存在 boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); 2.TextView部分文字设置颜色 TextView tv = new TextView(this); //添加css样式 tv.setText(Html.fromHtml("<font color="#ff0000">红色<

Android 系统 广播大全(转)

转自:http://www.apkbus.com/android-120202-1-1.html Intent.ACTION_AIRPLANE_MODE_CHANGED; //关闭或打开飞行模式时的广播 Intent.ACTION_BATTERY_CHANGED; //充电状态,或者电池的电量发生变化 //电池的充电状态.电荷级别改变,不能通过组建声明接收这个广播,只有通过Context.registerReceiver()注册 Intent.ACTION_BATTERY_LOW; //表示电池

Android利用广播监听设备网络连接(断网)的变化情况

MainActivity如下: package cc.testnetworkchange; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * 利用广播监听设备网络连接的变化情况 * 亦可借此监测到设备是否已经断开网络 */ public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedI

Android之广播(1)

(以下内容是阅读郭霖大神的<第一行代码>后自己总结的) 1.概述 广播是Android的四大组件之一. Android的广播机制十分灵活. 2.发送广播 如上图Android的广播主要分为两类:标准广播和有序广播. 所有的广播接收器都可以接收到标准广播,而且他们的接收几乎是在同一时刻.这意味着标准广播的效率很高,但无法被截断. 在接收有序广播时,广播接收器是由先后顺序的,优先级高的接收器先接收到广播,并且有权对该广播截断,不让后续接收器接收到. 发送标准广播和有序广播的方式非常简单. //发送

Android 通过广播接听Home键

Android 通过广播接听Home键,这个方式是比较好用的一种方式 1.自定义广播 public class BroadcastReceiverEx extends BroadcastReceiver{ String SYSTEM_REASON = "reason"; String SYSTEM_HOME_KEY = "homekey"; String SYSTEM_HOME_KEY_LONG = "recentapps"; @Override

Android中广播的发送BroadcastReceiver

之前在进行Android开发的过程中,由于某些原因,对android中广播的注册等相关知识进行了回顾及总结.也查看了相关源码及写demo验证.发现对广播的认识更深了一层.下面将所学进行记录,以备随时查看. 这些内容在网上也参考了他人的博客,相关链接如下: [1].基于源码分析的系统发送广播的流程:http://blog.csdn.net/zhangyongfeiyong/article/details/52022935 (很详细,推荐) [2].静态注册无法接收广播的问题:http://blog

android中广播的使用

广播消息机制用于进行系统级别的消息通知,每个应用程序可以对感兴趣的广播进行注册,并且将接收广播的方法定义在广播接收器中(Broadcast). 广播可以分为标准广播和有序广播. 注册广播的方法可以动态注册(在代码中进行注册)和静态注册(在清单文件中注册) 我们也可以发布自己定义的广播,并接收. 1.动态注册 动态注册的过程: 1)先自己定义一个广播接收者,继承Broadcast.重写onReceive()方法. 2)创建IntentFilter类,并添加要收听的广播. 3)创建自定义的广播接收者

Android中 广播BroadcastReceiver

一.IP拨号器 activity_main.xml文件: 只有一个输入ip的文本框和一个保存按钮, <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_h

Android中 广播发送 和 接受 的简单示例

AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.broadcast" android:versionCode="1" android:vers