`

ch024 Android BroadCastReceiver

阅读更多

--------------------------------------------AndroidManifest.xml----------------------------------

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.ch24"

    android:versionCode="1"

    android:versionName="1.0" >

    <uses-sdk

        android:minSdkVersion="10"

        android:targetSdkVersion="15" />

    <!-- 设置短信权限 -->

    <uses-permission android:name="android.permission.RECEIVE_SMS" />

    <!-- 电话权限 -->

    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

    <application

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <activity

            android:name=".MainActivity"

            android:label="@string/title_activity_main" >

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

        <!-- 注册广播 -->

        <receiver android:name=".SimpleSmsBroadcaseReceiver" >

            <intent-filter>

                <action android:name="android.provider.Telephony.SMS_RECEIVED" >

                </action>

            </intent-filter>

        </receiver>

        <receiver android:name=".SmsBroadcaseReceiver" >

            <intent-filter>

                <action android:name="android.provider.Telephony.SMS_RECEIVED" >

                </action>

            </intent-filter>

        </receiver>

        <receiver android:name=".CallInBroadcaseReceiver" >

            <intent-filter>

                <action android:name="android.intent.action.PHONE_STATE" >

                </action>

            </intent-filter>

        </receiver>

    </application>

</manifest>

--------------------------------------------Layout activity_main.xml----------------------------

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/LinearLayout1"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >

    <Button

        android:id="@+id/charge"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="显示当前电量" />

    <Button

        android:id="@+id/registerReceiver"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="已经注册的广播" />

</LinearLayout>

--------------------------------------------MainActivity.java--------------------------------------

package com.ch24;

import java.util.List;

import android.app.Activity;

import android.content.Intent;

import android.content.IntentFilter;

import android.content.pm.PackageManager;

import android.content.pm.ResolveInfo;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener {

/* 显示当前电量 */

private Button btn_charge;

/* 查看已经动态注册的广播 */

private Button btn_registed;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

findViews();

setListeners();

}

private void findViews() {

btn_charge = (Button) findViewById(R.id.charge);

btn_registed = (Button) findViewById(R.id.registerReceiver);

}

private void setListeners() {

btn_charge.setOnClickListener(this);

btn_registed.setOnClickListener(this);

}

@Override

public void onClick(View v) {

/* 动态注册广播 */

if (v == btn_charge) {

/* 广播+action* */

registerReceiver(new BatteryBroadcaseReceiver(), new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

else if (v == btn_registed) {// 查询已经注册

/* 包管理实例 */

PackageManager packageManager = getPackageManager();

Intent intent = new Intent();

intent.setAction("android.intent.action.PHONE_STATE");

List<ResolveInfo> list = packageManager.queryBroadcastReceivers(intent, PackageManager.GET_INTENT_FILTERS);

Log.i("a07""size="+list.size());

}

}

}

--------------------------------------------SimpleSmsBroadcaseReceiver.java------------------

package com.ch24;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.util.Log;

/**

 * 

 * 项目名称:com.ch24    

 * 类名称:SimpleSmsBroadcaseReceiver    

 * 类描述:  自定义广播,接收所有

 * 创建人:方勇   

 * 创建时间:2012-12-13 上午8:45:28   

 * Copyright (c) 方勇-版权所有

 */

public class SimpleSmsBroadcaseReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

Log.i("a07""接收所有广播..........");

}

}

--------------------------------------------SmsBroadcaseReceiver.java--------------------------

package com.ch24;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.os.Bundle;

import android.telephony.SmsMessage;

import android.util.Log;

/**

 * 

 * 项目名称:com.ch24    

 * 类名称:SimpleSmsBroadcaseReceiver    

 * 类描述:  自定义广播,接收所有

 * 创建人:方勇   

 * 创建时间:2012-12-13 上午8:45:28   

 * Copyright (c) 方勇-版权所有

 */

public class SmsBroadcaseReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

/* Intent中传递的附加数据 */

Bundle bundle = intent.getExtras();

/* 短信内容 */

Object[] data = (Object[]) bundle.get("pdus");

/* 声明Sms消息数组 */

SmsMessage[] messages = new SmsMessage[data.length];

for (int i = 0; i < messages.length; i++) {

/*设置消息体内容*/

messages[i] = SmsMessage.createFromPdu((byte[]) data[i]);

/* 电话号码 */

String smsnumber = messages[i].getDisplayOriginatingAddress();

/* 短信息内容 */

String smsbody = messages[i].getDisplayMessageBody();

Log.i("a07""smsnumber:"+smsnumber+"|smsbody:"+smsbody);

}

}

}

--------------------------------------------CallInBroadcaseReceiver.java------------------------

package com.ch24;

import android.app.Service;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.telephony.TelephonyManager;

import android.util.Log;

/**

 * 

 * 项目名称:com.ch24    

 * 类名称:CallInBroadcaseReceiver    

 * 类描述: 自定义广播,打电话的广播

 * 创建人:方勇   

 * 创建时间:2012-12-13 上午9:11:41   

 * Copyright (c) 方勇-版权所有

 */

public class CallInBroadcaseReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

/* 电话管理对象 */

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE);

String incomingTel;

Log.i("a07""来电状态"+telephonyManager.getCallState());

switch (telephonyManager.getCallState()) {

case TelephonyManager.CALL_STATE_RINGING:

incomingTel=intent.getStringExtra("incoming_number");

Log.i("a07""来电号码"+incomingTel);

break;

default:

break;

}

}

}

--------------------------------------------BatteryBroadcaseReceiver.java-----------------------

package com.ch24;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.util.Log;

/**

 * 

 * 项目名称:com.ch24    

 * 类名称:BatteryBroadcaseReceiver    

 * 类描述:电池广播  

 * 创建人:方勇   

 * 创建时间:2012-12-13 上午9:49:10   

 * Copyright (c) 方勇-版权所有

 */

public class BatteryBroadcaseReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

/* 只接收电池改变时的广播 */

if(Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())){

/* 电量 */

int level = intent.getIntExtra("level", 0);

/*刻度*/

int scala = intent.getIntExtra("scala", 100);

Log.i("a07""当前电量为:"+level*100/scala+"%");

}

}

}

--------------------------------------------效果-------------------------------------------------

发短信

打电话

电池电量

<!--EndFragment-->
  • 大小: 26.4 KB
  • 大小: 12.2 KB
  • 大小: 26.9 KB
  • 大小: 26.7 KB
  • 大小: 2.8 KB
0
0
分享到:
评论

相关推荐

    CH341 Android代码

    1. **Android应用结构**:Android应用通常由多个组件构成,如Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)、ContentProvider(内容提供者)等。每个组件都有其特定的生命周期和用途。 2. *...

    android CH34x 发送与接收数据

    在Android平台上进行CH34x芯片的USB通信是嵌入式开发中的常见任务,尤其对于需要与硬件设备交互的应用来说。CH34x系列芯片是由韦尔奇科技(Wch Chip)开发的一组USB到串口控制器,广泛用于USB转串口适配器,使得通过...

    Androidsdk范例大全(CH03-CH05)

    CH03章节通常会涵盖Android应用的基本架构和组件,例如Activity、Intent、Service、BroadcastReceiver以及ContentProvider。Activity是Android应用中的基本单元,用于展示用户界面;Intent则是Android系统中不同组件...

    Android SDK开发范例大全(第二版)CH05.rar

    《Android SDK开发范例大全(第二版)CH05》是针对Android应用开发的一份重要资源,由清华大学出版社出版。这个压缩包包含了第五章的源代码,为开发者提供了丰富的实践示例,帮助深入理解Android SDK的使用。在这个...

    ch4-5android sdk 范例大全

    CH05部分可能更深入地探讨Android SDK的功能,例如服务(Service)、广播接收器(BroadcastReceiver)、内容提供者(ContentProvider)和通知(Notification)。Service是后台运行的组件,常用于执行长时间任务,而...

    Android开发权威指南(源代码ch03)

    在本章“ch03”中,我们将探索Android应用的基础架构,包括Activity、Intent、BroadcastReceiver以及Service等核心组件。这些组件构成了Android应用的核心功能,理解和掌握它们对于任何Android开发者来说都是至关...

    android ophone开发完全讲义源码ch12

    《Android Ophone开发完全讲义源码Ch12》是一份深入探讨Android Ophone平台开发的教程资料,其中包含了第十二章的完整源代码。这一章的焦点可能集中在特定的开发主题上,如应用程序框架、用户界面设计、系统服务集成...

    Android ophone开发完全讲义源码ch02-08

    这个压缩包包含的子文件按章节顺序排列,分别是ch02、ch07、ch06、ch04、ch02(可能是重复或错误)、以及ch05。下面我们将详细探讨这些章节涵盖的Android开发关键知识点。 **第二章:Android系统架构与开发环境搭建...

    google.android.sdk开发范例大全.源码ch2-ch6

    1. **AndroidManifest.xml**:这是每个Android应用的核心配置文件,用于声明应用的组件(如Activity、Service、BroadcastReceiver等)、权限需求和其他元数据。 2. **Activity**:Activity是Android应用的基本交互...

    android SDK范例开发大全 第3版 源代码 CH5

    7. Android组件:Activity、Service、BroadcastReceiver和ContentProvider是Android应用的四大组件。CH5可能详细讲解了如何创建和管理这些组件,以及它们之间的交互。 8. Android Studio工具:作为开发环境,...

    android SDK范例开发大全 第3版 源代码 CH3

    《Android SDK范例开发大全 第3版 源代码 CH3》是针对Android开发者的一份珍贵资源,它包含了第三章的全部源代码示例。这个压缩包旨在帮助开发者深入理解和应用Android SDK的各种功能,通过实际操作来提升技能。在本...

    android开发课件

    1. **Android开发基础**(ch_01android开发基础.ppt):这部分内容通常会介绍Android平台的概述,包括Android系统架构、开发环境的搭建(如安装Android Studio和SDK)、以及编写第一个Hello World应用程序。...

    android ophone开发完全讲义源码ch05

    《Android OPhone开发完全讲义源码Ch05》是一份深入探讨Android OPhone平台开发的教程资料,其中包含了第五章的源代码。这个压缩包是开发者和学习者宝贵的资源,帮助他们理解并实践Android OPhone应用的开发过程。...

    android SDK范例开发大全 第3版 源代码 CH8

    《Android SDK范例开发大全 第3版 源代码 CH8》是一本专注于Android应用程序开发的实战指南,其中包含了丰富的示例代码,旨在帮助开发者深入理解Android SDK的各种功能和使用方法。这部分源代码对应的是书中的第八章...

    android ophone开发完全讲义源码ch18

    3. **BroadcastReceiver和Intent**:BroadcastReceiver用于接收系统或应用广播事件,Intent则是Android系统中的消息传递机制。开发者可能需要了解如何在OPhone中注册和处理特定的广播。 4. **OPhone UI设计**:...

    Android SDK开发范例大全(第二版)CH03.rar

    《Android SDK开发范例大全(第二版)CH03》是针对Android应用程序开发的一本详尽教程,由清华大学出版社出版。这本书的第三章涵盖了Android SDK中的关键知识点,旨在帮助开发者深入理解和实践Android应用的构建过程。...

    android开发权威指南(第二版)源代码

    5. **BroadcastReceiver** (可能在ch28) - 广播接收器:讲解如何注册和使用BroadcastReceiver监听系统或自定义广播事件。 6. **内容提供者(Content Provider)** (可能在ch39) - 内容提供者的概念和作用:内容提供...

    《Android/OPhone开发完全讲义》一书的所有源代码

    1. **Android应用基础**:在ch15中,可能涉及到Android应用的基本结构和组件,如Activity、Intent、BroadcastReceiver、Service和ContentProvider。学习者可以了解到如何创建Android项目,设置布局文件,以及如何在...

    android ophone开发完全讲义源码ch15.3

    《Android OPhone开发完全讲义源码Ch15.3》是针对移动应用开发者的一份珍贵资源,主要聚焦于Android平台上的OPhone开发技术。OPhone是中国电信与Android合作推出的一个定制化操作系统,它在原生Android的基础上进行...

    精通Android4源码_source_code_of_ProAndroid4

    `ProAndroid4_Ch19_TestReceivers.zip` 关注广播接收器(BroadcastReceiver)。广播接收器允许应用监听并响应系统或应用广播的事件,如网络状态改变、电池电量警告等。这部分源码会解释如何注册、编写和使用广播接收...

Global site tag (gtag.js) - Google Analytics