ch024 Android(安卓)BroadCastReceiver
--------------------------------------------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-->
更多相关文章
- ch026 Android(安卓)Socket
- Android(安卓)Socket 发送广播包的那些坑
- Android(安卓)Socket 发送广播包的那些坑
- Android(安卓)6.0发布大会来了,来看看Android(安卓)6.0棉花糖新特
- Android(安卓)BroadcastReceiver 简介
- 【Android(安卓)进阶】Android(安卓)Home 键监听
- Android开发规范
- Android的6种布局管理器总结
- Android中横竖屏切换的问题