android廣播總結

來源:互聯網
上載者:User

標籤:android   廣播   

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();}}}}



android廣播總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.