1、sendBroadcast方法发送广播。

package com.example.android_broadcast_normal;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {private Button btn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn=(Button)this.findViewById(R.id.button1);//发送广播btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent(MainActivity.this,MyReceiver.class);sendBroadcast(intent);}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

/** *Version: *author:YangQuanqing *Data: */package com.example.android_broadcast_normal;import android.annotation.SuppressLint;import android.annotation.TargetApi;import android.app.Notification;import android.app.NotificationManager;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Build;/** * 广播的生命周期onReceive()从开始到结束 * @author YangQuanqing yqq * */@SuppressLint("NewApi")public class MyReceiver extends BroadcastReceiver {//通知管理实例private NotificationManager notificationManager;//创建通知者实例private Notification.Builder builder;@TargetApi(Build.VERSION_CODES.HONEYCOMB)@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stub//获得NotificationManager实例notificationManager=(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);//实例化创建通知者实例builder=new Notification.Builder(context);//设置通知builder.setContentTitle("短信通知");builder.setContentText("你好");builder.setSmallIcon(R.drawable.ic_launcher);//构建一个通知notificationManager.notify(10086,builder.build());}}


2、发送顺序广播

package com.example.android_brocast_order;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {private Button btn1,btn2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn1=(Button)this.findViewById(R.id.button1);btn2=(Button)this.findViewById(R.id.button2);btn1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 多个广播接收者发送广播Intent intent=new Intent();intent.putExtra("name", "李华");intent.setAction("com.yqq.mutilBrocast");sendBroadcast(intent);}});//发送有序广播btn2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//创建意图Intent intent=new Intent();intent.putExtra("name","android");intent.setAction("com.yqq.mutilBrocast");//发送有序广播sendOrderedBroadcast(intent, null);}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

/** *Version: *author:YangQuanqing *Data: */package com.example.android_brocast_order;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;/** * @author YangQuanqing yqq * */public class BroadCast1 extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Log.i("BroadCast1<<<", intent.getStringExtra("name"));//abortBroadcast();//终止广播}}


/** *Version: *author:YangQuanqing *Data: */package com.example.android_brocast_order;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;/** * @author YangQuanqing yqq * */public class CopyOfBroadCast2 extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Log.i("BroadCast2<<<", intent.getStringExtra("name"));abortBroadcast();//若终止发有序广播的时候,后面的广播收不到}}

/** *Version: *author:YangQuanqing *Data: */package com.example.android_brocast_order;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;/** * @author YangQuanqing yqq * */public class CopyOfBroadCast3 extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Log.i("BroadCast3<<<", intent.getStringExtra("name"));}}

 <receiver             android:name="com.example.android_brocast_order.BroadCast1"            >            <!-- 设置优先权整数越大优先权越大 -->            <intent-filter android:priority="10000">                <action android:name="com.yqq.mutilBrocast"/>            </intent-filter>        </receiver>        <receiver            android:name="com.example.android_brocast_order.CopyOfBroadCast2"            >              <intent-filter android:priority="100">                <action android:name="com.yqq.mutilBrocast"/>            </intent-filter>        </receiver>        <receiver             android:name="com.example.android_brocast_order.CopyOfBroadCast3"            >              <intent-filter android:priority="9">                <action android:name="com.yqq.mutilBrocast"/>            </intent-filter>        </receiver>    
  
  


在实际开发中广播的应用方式如下demo所示:

package com.example.yqqmobilesafe.service;import java.util.List;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.app.Service;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.AsyncTask;import android.os.IBinder;import android.telephony.SmsMessage;import android.util.Log;import com.example.yqqmobilesafe.RubishSmsActivity;import com.example.yqqmobilesafe.ContactProvider.ContactInfoProvider;import com.example.yqqmobilesafe.db.dao.RubishSmsInfoDao;import com.example.yqqmobilesafe.domain.ContactInfo;import com.example.yqqmobilesafe.domain.RubishSmsInfo;/** * 陌生短信拦截服务 * @author yqq * */public class StopStrangerPhoneNumberSmsService extends Service {private boolean D=true;private StopStrangerSmsReceiver mReceiver;//陌生人短信拦截广播接受者public StopStrangerPhoneNumberSmsService() {// TODO Auto-generated constructor stub}@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate() {if(D){Log.i("StopStrangerPhoneNumberSmsService"," onCreate()");}//注册广播mReceiver=new StopStrangerSmsReceiver();IntentFilter filter=new IntentFilter();filter.setPriority(Integer.MAX_VALUE);filter.addAction("android.provider.Telephony.SMS_RECEIVED");registerReceiver(mReceiver, filter);super.onCreate();}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {if(D){Log.i("StopStrangerPhoneNumberSmsService","onStartCommand");}return super.onStartCommand(intent, flags, startId);}@Overridepublic void onDestroy() {if(D){Log.i("StopStrangerPhoneNumberSmsService","onDestroy() ");}//取消广播接收者unregisterReceiver(mReceiver);mReceiver=null;super.onDestroy();}//陌生人短信拦截广播接受者class  StopStrangerSmsReceiver extends BroadcastReceiver{private String sender;//发送人号码private String body;//短信内容@Overridepublic void onReceive(Context context, Intent intent) {Object[] objs = (Object[]) intent.getExtras().get("pdus");for(Object obj : objs ){SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) obj);//获得短信发送者的号码sender = smsMessage.getOriginatingAddress(); body = smsMessage.getMessageBody(); new AsyncTask<Void,Void,Void>(){List<ContactInfo> infos=null;@Overrideprotected Void doInBackground(Void... params) {ContactInfoProvider contactInfoProvider=new ContactInfoProvider(getApplicationContext());infos=contactInfoProvider.getSystemContactInfos();return null;}@Overrideprotected void onPostExecute(Void result) {if(infos==null){//Toast.makeText(getApplicationContext(),, duration)return;}for(ContactInfo info:infos){if(info.getPhoneNumber().equals(sender)){return;}}abortBroadcast();new AsyncTask<Void,Void,Void>(){@Overrideprotected Void doInBackground(Void... params) {RubishSmsInfo sms=new RubishSmsInfo();sms.setPhoneNumber(sender);sms.setSmsContent(body);//把陌生人短信存储在数据库表里RubishSmsInfoDao rubishSmsInfoDao=new RubishSmsInfoDao(getApplicationContext());rubishSmsInfoDao.addSmsInfos(sms);return null;}@Overrideprotected void onPostExecute(Void result) {// TODO Auto-generated method stubsuper.onPostExecute(result);NotificationManager nm=(NotificationManager) getSystemService(NOTIFICATION_SERVICE);Intent intent=new Intent(StopStrangerPhoneNumberSmsService.this,RubishSmsActivity.class);PendingIntent pi=PendingIntent.getActivity(StopStrangerPhoneNumberSmsService.this, 0, intent, 0);//发一个拦截通知Notification notification=new Notification.Builder(getApplicationContext()).setAutoCancel(true).setTicker("拦截到陌生短信").setSmallIcon(com.example.yqqmobilesafe.R.drawable.notif_icon_sms).setContentText("拦截到陌生短信").setContentIntent(pi).build();nm.notify(100,notification);}}.execute();super.onPostExecute(result);}}.execute();}}}}



更多相关文章

  1. 初、中级android基本知识点整理
  2. Android:静态注册BroadcastReceiver
  3. Android四大组件总结——BoardcastReceiver
  4. 解决 EditText 的默认焦点问题
  5. Android(安卓)程式开发:(廿一)消息传递 —— 21.3 使用Intent发送短
  6. Android(安卓)dispatchTouchEvent源码分析
  7. Android(安卓)Mms之短信接收流程--从Framework到App
  8. Android(判断wifi是否开启,手机屏幕状态,sdcard是否被拔出,设置全屏)
  9. 使用BroadcasterRecevier拦截系统短信息_使用service后台获取位

随机推荐

  1. android数据的五种存储方式
  2. 【android】优秀的UI资源站点集合
  3. Windows下PhoneGap移动开发环境搭建-Andr
  4. android 生成快捷方式(包括源码)
  5. android 基础代码 备忘
  6. Android锁屏和激活设备管理器
  7. FFMPEG移植到Android Studio4.0
  8. Android Audio System之AudioPolicyServi
  9. Android Eclipse 源码工程 调试
  10. Android OpenGL教程-第六课