BroadcastReceiver--Android廣播機制,android廣播機制

來源:互聯網
上載者:User

BroadcastReceiver--Android廣播機制,android廣播機制
什麼是廣播

        生活中的電視頻道、收音機、手機、都有自己的特定廣播,他們不管是否有人關心、收聽等,不管你是否看電視,每個頻道都實施按照自己的進步進行播放、收音機也是!所以我理解的android廣播機制也就是這樣--廣播發行者只負責把發生的事件發出,至於是否有接聽者或者接聽者接收到怎樣處理並不關心。

廣播在android中的用途    從上面的介紹不難發現,用來傳輸資料。具體如下: 怎樣實現廣播

         現在我們就來實現一個簡單的廣播程式。Android提供了兩種註冊廣播接受者的形式,分別是在程式中動態註冊和在xml中指定。他們之間的區別就是作用的範圍不同,程式動態註冊的接收者只在程式運行過程中有效,而在xml註冊的接收者不管你的程式有沒有啟動有會起作用。首先介紹在程式中動態註冊的方式。

   Android有系統廣播也可以自訂廣播,要想接受廣播資訊,那麼這個廣播接收器就得我們自己來實現了,我們可以繼承BroadcastReceiver,就可以有一個廣播接受器了。有個接受器還不夠,我們還得重寫BroadcastReceiver裡面的onReceiver方法,當來廣播的時候我們要幹什麼,下面一個小程式來進行展示廣播的應用。

  一、註冊(當實現了廣播接收器,還要設定廣播接收器接收廣播資訊的類型,這裡是資訊:android.provider.Telephony.SMS_RECEIVED)

  • 在AndroidManifest.xml中配置廣播
  •  

     

      二、繼承BroadcastReceiver,重寫onReceiver方法。這裡是監聽到簡訊發送,將觸發這個廣播,然後把簡訊內容解析出來並展示:
    public class SmsBroadCastReceiver extends BroadcastReceiver    {         @Override      public void onReceive(Context context, Intent intent)       {           Bundle bundle = intent.getExtras();           Object[] object = (Object[])bundle.get("pdus");           SmsMessage sms[]=new SmsMessage[object.length];           for(int i=0;i<object.length;i++)           {               sms[0] = SmsMessage.createFromPdu((byte[])object[i]);               Toast.makeText(context, "來自"+sms[i].getDisplayOriginatingAddress()+" 的訊息是:"+sms[i].getDisplayMessageBody(), Toast.LENGTH_SHORT).show();           }           //終止廣播,在這裡我們可以稍微處理,根據使用者輸入的號碼可以實現簡訊防火牆。           abortBroadcast();       }          }  

      

          

     

     

          

          

     
    android開發廣播機制一般什情況會用到 詳細分析與解釋

    Android中最典型的廣播器是電話來電和簡訊通知。
    你做音樂播放器的話根本不需要廣播 進度條拖動是監聽seekbar的拖動事件
    //綁定聲音進度條監聽器 soundBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // TODO Auto-generated method stub //處理你的事件 } });
     
    android的BroadcastReceiver的問題

    public class TestActivity extends Activity {
    /** Called when the activity is first created. */
    private Button bt1 = null;
    private Button bt2 = null;
    private static String filter_ACTION = "android.provider.Telephony.SMS_RECEIVED";
    SMSReceiver smsReceiver = null;
    public String tag = "TestActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    registerReceiver();
    setContentView(R.layout.main);
    bt1 = (Button) findViewById(R.id.button);
    bt1.setOnClickListener(new RegisterBroadReceiver());
    bt2 = (Button) findViewById(R.id.button1);
    bt2.setOnClickListener(new unRegisterBroadReceiver());
    }
    private void registerReceiver() {
    IntentFilter filter = new IntentFilter();
    filter.addAction(filter_ACTION);
    smsReceiver = new SMSReceiver();
    TestActivity.this.registerReceiver(smsReceiver, filter);
    }
    class SMSReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    Log.d(tag, "SMSReceiver");

    Toast.makeText(TestActivity.this, "新簡訊"+intent.getStringExtra("yaner"), Toast.LENGTH_LONG).show();
    }
    }
    class RegisterBroadReceiver implements OnClickListener {
    @Override
    public void onClick(View v) {
    Log.d(tag, "RegisterBroadReceiver");
    Intent mIntent = new Intent(filter_ACTION);
    mIntent.putE......餘下全文>>
     

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.