--------------------------------------------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+"%");

}

}

}

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

发短信

打电话

电池电量

<!--EndFragment-->

更多相关文章

  1. ch026 Android(安卓)Socket
  2. Android(安卓)Socket 发送广播包的那些坑
  3. Android(安卓)Socket 发送广播包的那些坑
  4. Android(安卓)6.0发布大会来了,来看看Android(安卓)6.0棉花糖新特
  5. Android(安卓)BroadcastReceiver 简介
  6. 【Android(安卓)进阶】Android(安卓)Home 键监听
  7. Android开发规范
  8. Android的6种布局管理器总结
  9. Android中横竖屏切换的问题

随机推荐

  1. Android Audio控制和MediaButton远程控制
  2. 细看Google Android的开源姿态
  3. NDK编译.so动态库
  4. Android 使用Vitamio打造自己的万能播放
  5. 关于Android中android:marginBottom不起
  6. Android(安卓)鐨勭郴缁熷睘鎬?SystemProp
  7. Android主题与样式
  8. Android 4.4 Dialog 被状态栏遮挡的解决
  9. android 3.0 ationbar使用总结
  10. 如何实现textview多余文字的水平滚动显示