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

<manifestxmlns: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-permissionandroid:name="android.permission.RECEIVE_SMS"/>

<!--电话权限-->

<uses-permissionandroid: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>

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

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

</intent-filter>

</activity>

<!--注册广播-->

<receiverandroid:name=".SimpleSmsBroadcaseReceiver">

<intent-filter>

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

</action>

</intent-filter>

</receiver>

<receiverandroid:name=".SmsBroadcaseReceiver">

<intent-filter>

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

</action>

</intent-filter>

</receiver>

<receiverandroid:name=".CallInBroadcaseReceiver">

<intent-filter>

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

</action>

</intent-filter>

</receiver>

</application>

</manifest>

--------------------------------------------Layoutactivity_main.xml----------------------------

<LinearLayoutxmlns: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--------------------------------------

packagecom.ch24;

importjava.util.List;

importandroid.app.Activity;

importandroid.content.Intent;

importandroid.content.IntentFilter;

importandroid.content.pm.PackageManager;

importandroid.content.pm.ResolveInfo;

importandroid.os.Bundle;

importandroid.util.Log;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

publicclassMainActivityextendsActivityimplementsOnClickListener{

/*显示当前电量*/

privateButtonbtn_charge;

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

privateButtonbtn_registed;

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

findViews();

setListeners();

}

privatevoidfindViews(){

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

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

}

privatevoidsetListeners(){

btn_charge.setOnClickListener(this);

btn_registed.setOnClickListener(this);

}

@Override

publicvoidonClick(Viewv){

/*动态注册广播*/

if(v==btn_charge){

/*广播+action**/

registerReceiver(newBatteryBroadcaseReceiver(),newIntentFilter(Intent.ACTION_BATTERY_CHANGED));

}elseif(v==btn_registed){//查询已经注册

/*包管理实例*/

PackageManagerpackageManager=getPackageManager();

Intentintent=newIntent();

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

packagecom.ch24;

importandroid.content.BroadcastReceiver;

importandroid.content.Context;

importandroid.content.Intent;

importandroid.util.Log;

/**

*

*项目名称:com.ch24

*类名称:SimpleSmsBroadcaseReceiver

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

*创建人:方勇

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

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

*/

publicclassSimpleSmsBroadcaseReceiverextendsBroadcastReceiver{

@Override

publicvoidonReceive(Contextcontext,Intentintent){

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

}

}

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

packagecom.ch24;

importandroid.content.BroadcastReceiver;

importandroid.content.Context;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.telephony.SmsMessage;

importandroid.util.Log;

/**

*

*项目名称:com.ch24

*类名称:SimpleSmsBroadcaseReceiver

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

*创建人:方勇

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

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

*/

publicclassSmsBroadcaseReceiverextendsBroadcastReceiver{

@Override

publicvoidonReceive(Contextcontext,Intentintent){

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

Bundlebundle=intent.getExtras();

/*短信内容*/

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

/*声明Sms消息数组*/

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

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

/*设置消息体内容*/

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

/*电话号码*/

Stringsmsnumber=messages[i].getDisplayOriginatingAddress();

/*短信息内容*/

Stringsmsbody=messages[i].getDisplayMessageBody();

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

}

}

}

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

packagecom.ch24;

importandroid.app.Service;

importandroid.content.BroadcastReceiver;

importandroid.content.Context;

importandroid.content.Intent;

importandroid.telephony.TelephonyManager;

importandroid.util.Log;

/**

*

*项目名称:com.ch24

*类名称:CallInBroadcaseReceiver

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

*创建人:方勇

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

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

*/

publicclassCallInBroadcaseReceiverextendsBroadcastReceiver{

@Override

publicvoidonReceive(Contextcontext,Intentintent){

/*电话管理对象*/

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

StringincomingTel;

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

switch(telephonyManager.getCallState()){

caseTelephonyManager.CALL_STATE_RINGING:

incomingTel=intent.getStringExtra("incoming_number");

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

break;

default:

break;

}

}

}

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

packagecom.ch24;

importandroid.content.BroadcastReceiver;

importandroid.content.Context;

importandroid.content.Intent;

importandroid.util.Log;

/**

*

*项目名称:com.ch24

*类名称:BatteryBroadcaseReceiver

*类描述:电池广播

*创建人:方勇

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

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

*/

publicclassBatteryBroadcaseReceiverextendsBroadcastReceiver{

@Override

publicvoidonReceive(Contextcontext,Intentintent){

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

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

/*电量*/

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

/*刻度*/

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

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

}

}

}

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

发短信

ch024 Android BroadCastReceiver_第1张图片

ch024 Android BroadCastReceiver_第2张图片

打电话

ch024 Android BroadCastReceiver_第3张图片

电池电量

ch024 Android BroadCastReceiver_第4张图片

<!--EndFragment-->

更多相关文章

  1. android Gradle打包修改生成的apk文件名称
  2. Android版本号对应API、版本名称、NDK版本等
  3. android获取应用名称,判断应用是否安装
  4. android framework 低电量关机处理流程 浅析
  5. android自带的drawable图标ico名称对应表
  6. 微软的 Android 计划:邪恶的天才计划或只是邪恶?
  7. 从零开始学android开发-adt-bundle-eclipse下的修改android app
  8. Android版本名称、版本号、API level对应关系
  9. Android 电量显示Widgets插件实现

随机推荐

  1. 网络请求工具类HttpUtils
  2. Android笔记之使用Toast
  3. Android(安卓)Studio “Cannot create di
  4. android 运用百度地图画轨迹
  5. Android编译问题
  6. 广播机制 笔记
  7. adb使用wifi无线连接调试Android设备
  8. Android(安卓)图片添加水印
  9. HttpURLconnection上传数据
  10. Android(安卓)socket通信app Client端