最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android廣播接收機(jī)制詳細(xì)介紹(附短信接收實(shí)現(xiàn))

 更新時(shí)間:2015年06月06日 10:28:30   投稿:junjie  
這篇文章主要介紹了Android廣播接收機(jī)制詳細(xì)介紹(附短信接收實(shí)現(xiàn)),本文講解了BroadcastReceiver的注冊(cè)過(guò)程BroadcastReceiver的步驟,并給出一個(gè)短信廣播實(shí)現(xiàn)示例,需要的朋友可以參考下

Android中廣播(BroadcastReceiver)的詳細(xì)講解.

1. BroadcastReceiver的注冊(cè)過(guò)程:
(1).廣播消息發(fā)出來(lái)后,只有訂閱了該廣播的對(duì)象才會(huì)接收發(fā)出來(lái)的廣播消息并做出相應(yīng)處理。
**(2).**Android廣播分為兩個(gè)方面:廣播發(fā)送者和廣播接收者。Android中的廣播使用了觀察者模式,基于消息的發(fā)布/訂閱事件模型。廣播接收者通過(guò)Binder機(jī)制向AMS進(jìn)行注冊(cè),AMS查找符合相應(yīng)條件的Broadcastreceiver,將廣播發(fā)送到BroadcastReceiver(一般情況下是Activity)相應(yīng)的消息循環(huán)隊(duì)列中。消息循環(huán)執(zhí)行拿到此廣播,回調(diào)BroadcastReceiver中的onReceive()方法。
(3).廣播發(fā)送者和廣播接收者的執(zhí)行順序是異步的,發(fā)出去的廣播不會(huì)關(guān)心有無(wú)接收者的接收,也不確定接收者是什么時(shí)候能接收到。
2. BroadcastReceiver的步驟:
(1).注冊(cè)廣播:廣播接收者在AMS中注冊(cè)廣播。
(2).發(fā)送廣播:廣播發(fā)送者向AMS中發(fā)送廣播。
(3).接收廣播:廣播接收者拿到廣播后調(diào)用onReceive()方法執(zhí)行。

以下是一個(gè)發(fā)送短信的例子,代碼如下:

BroadcastReceiverHelper 類:

package com.scd.broadcastreceiver.helper;

import com.scd.broadcastreceiver.activity.MainActivity;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

/**
 * 廣播接收
 * 
 * @author scd
 * 
 */
public class BroadcastReceiverHelper extends BroadcastReceiver {
  /** 上下文 */
  private MainActivity mActivity = null;

  public BroadcastReceiverHelper(MainActivity mContext) {
    super();
    mActivity = mContext;
  }

  @Override
  public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(MainActivity.ACTION_SENDMESSAGE)) {
      toast("發(fā)送成功");
    } else if (intent.getAction()
        .equals(MainActivity.ACTION_DELIVERMESSAGE)) {
      toast("接收成功");
    }

  }

  public void toast(String text) {
    Toast.makeText(mActivity, text, Toast.LENGTH_SHORT).show();

  }

}


MainActivity類:

package com.scd.broadcastreceiver.activity;

import com.scd.broadcastreceiver.R;
import com.scd.broadcastreceiver.helper.BroadcastReceiverHelper;

import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.telephony.gsm.SmsManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {
  private Button mButton = null;
  /** 發(fā)送短信 */
  public static String ACTION_SENDMESSAGE = "com.scd.broadcastreceiver.MainActivity.SendMessage";
  /** 接收短信 */
  public static String ACTION_DELIVERMESSAGE = "com.scd.broadcastreceiver.MainActivity.DeliverMessage";
  /** Reciver類 */
  private BroadcastReceiverHelper mHelperS = null;
  private BroadcastReceiverHelper mHelperD = null;
  /** 短信管理類 */
  private SmsManager mSmsManager = null;

  /** 電話號(hào)碼 */
  private String mTelephone = "13607567010";

  /** 短信內(nèi)容 */
  private String mContext = "你好,有什么需要幫助的嗎?";

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mButton = (Button) findViewById(R.id.sendBroadcast);
    mButton.setOnClickListener(this);
    mSmsManager = SmsManager.getDefault();
    // 注冊(cè)廣播
    registerBroadcast();
  }

  @Override
  public void onClick(View v) {
    switch (v.getId()) {
    case R.id.sendBroadcast: {
      //發(fā)送廣播
      sendBroadcastReceiver(mTelephone, mContext);
      break;
    }

    default:
      break;
    }

  }

  /**
   * 注冊(cè)廣播
   */
  public void registerBroadcast() {
    // 發(fā)送
    IntentFilter intentFilterS = new IntentFilter(ACTION_SENDMESSAGE);
    mHelperS = new BroadcastReceiverHelper(MainActivity.this);
    this.registerReceiver(mHelperS, intentFilterS);
    // 接收
    IntentFilter intentFilterD = new IntentFilter(ACTION_DELIVERMESSAGE);
    mHelperD = new BroadcastReceiverHelper(MainActivity.this);
    this.registerReceiver(mHelperD, intentFilterD);
  }

  /**
   * 發(fā)送廣播 短信發(fā)送的過(guò)程:發(fā)送的時(shí)候需要發(fā)送廣播一次,接收的時(shí)候需要發(fā)送廣播一次
   */
  public void sendBroadcastReceiver(String telephone, String content) {
    if (telephone != null) {
      Intent sIntent = new Intent(ACTION_SENDMESSAGE);
      // 短信成功發(fā)送后才發(fā)送該廣播
      PendingIntent sentIntent = PendingIntent.getBroadcast(
          MainActivity.this, 0, sIntent, 0);

      Intent dIntent = new Intent(ACTION_DELIVERMESSAGE);
      // 短信接收后才發(fā)送該廣播
      PendingIntent deliveryIntent = PendingIntent.getBroadcast(
          MainActivity.this, 0, dIntent, 0);
      mSmsManager.sendTextMessage(telephone, null, content, sentIntent,
          deliveryIntent);
      // this.sendBroadcast(intent);

    }

  }
}

注意:需要添加以下權(quán)限:

 

 <!-- 短信權(quán)限 -->
  <uses-permission android:name="android.permission.SEND_SMS" >
  </uses-permission>
  <uses-permission android:name="android.permission.READ_SMS" >
  </uses-permission>
  <uses-permission android:name="android.permission.RECEIVE_SMS" >
  </uses-permission>

相關(guān)文章

  • Android自定義View模仿QQ討論組頭像效果

    Android自定義View模仿QQ討論組頭像效果

    最近發(fā)現(xiàn)QQ討論組的頭像非常不錯(cuò),正好最近又有時(shí)間,所有就動(dòng)手實(shí)踐了下,所以下面這篇文章主要給大家介紹了Android自定義View模仿QQ討論組頭像效果的相關(guān)資料,文中給出了詳細(xì)的介紹的示例代碼,需要的朋友可以參考學(xué)習(xí),下面來(lái)一起看看吧。
    2017-04-04
  • native.js獲取手機(jī)硬件基本信息實(shí)例代碼android版

    native.js獲取手機(jī)硬件基本信息實(shí)例代碼android版

    本文為大家分享了native.js獲取手機(jī)硬件基本信息實(shí)例代碼android版包括手機(jī)MAC地址,手機(jī)內(nèi)存大小,手機(jī)存儲(chǔ)空間大小,手機(jī)CPU信息等手機(jī)硬件基本信息
    2018-09-09
  • Android原生項(xiàng)目集成Flutter解決方案

    Android原生項(xiàng)目集成Flutter解決方案

    這篇文章主要介紹了Android原生項(xiàng)目集成Flutter解決方案,想了解Flutter的同學(xué)可以參考下
    2021-04-04
  • Android自定義加載控件實(shí)現(xiàn)數(shù)據(jù)加載動(dòng)畫(huà)

    Android自定義加載控件實(shí)現(xiàn)數(shù)據(jù)加載動(dòng)畫(huà)

    這篇文章主要為大家詳細(xì)介紹了Android自定義加載控件實(shí)現(xiàn)數(shù)據(jù)加載動(dòng)畫(huà)的相關(guān)資料,仿美團(tuán)、京東數(shù)據(jù)加載動(dòng)畫(huà)、小人奔跑動(dòng)畫(huà),感興趣的小伙伴們可以參考一下
    2016-04-04
  • 淺談Android Studio3.0更新之路(遇坑必入)

    淺談Android Studio3.0更新之路(遇坑必入)

    這篇文章主要介紹了淺談Android Studio3.0更新之路(遇坑必入),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • Android如何動(dòng)態(tài)改變App桌面圖標(biāo)

    Android如何動(dòng)態(tài)改變App桌面圖標(biāo)

    這篇文章主要介紹了 Android動(dòng)態(tài)改變App桌面圖標(biāo)的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下
    2017-01-01
  • Android實(shí)現(xiàn)底部彈出按鈕菜單升級(jí)版

    Android實(shí)現(xiàn)底部彈出按鈕菜單升級(jí)版

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)底部彈出按鈕菜單的升級(jí)版,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Android底部導(dǎo)航欄的三種風(fēng)格實(shí)現(xiàn)

    Android底部導(dǎo)航欄的三種風(fēng)格實(shí)現(xiàn)

    這篇文章主要介紹了Android底部導(dǎo)航欄的三種風(fēng)格實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Android如何添加控件監(jiān)聽(tīng)器(三種方式)

    Android如何添加控件監(jiān)聽(tīng)器(三種方式)

    本文主要介紹了Android如何添加控件監(jiān)聽(tīng)器(三種方式),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Android指紋登錄工具類封裝

    Android指紋登錄工具類封裝

    這篇文章主要為大家詳細(xì)介紹了Android指紋登錄工具類的封裝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09

最新評(píng)論

招远市| 全椒县| 平阴县| 彭水| 蒲城县| 阿巴嘎旗| 亚东县| 崇义县| 田阳县| 张掖市| 双峰县| 阜阳市| 蓬安县| 黄平县| 冷水江市| 台北县| 丰顺县| 武义县| 花莲县| 社旗县| 抚州市| 巴青县| 九江县| 綦江县| 盘山县| 博客| 河曲县| 酒泉市| 甘肃省| 永春县| 合阳县| 桂东县| 龙川县| 双城市| 江川县| 萝北县| 泾川县| 安阳县| 明溪县| 和田市| 辽宁省|