广播接收者--BroadcastReceiver

本文介绍了Android系统中的广播接收者(BroadcastReceiver)组件及其使用方法,并详细展示了如何利用广播接收者实现来电显示前缀修改及拨号器功能。
android应用程序的四个重要的组件:(所有组件的要使用都要在androidManifest.xml中配置)
1.activity  ui界面的展现
2.content provider 内容提供者 暴露自己应用私有的数据给别的应用程序
3.broadcast receiver 广播接受者.
4.service 后台服务.  长期在后台运行, 没有用户界面的一个组件.


在android系统里面有很多内置的广播事件
1. 电池电量低.
2. 短信到来了
3. 电话拨打出去了
4. sd卡被插进来了.
5. 屏幕锁屏了.
6. 手机重启了.



广播接收者(BroadcastReceiver)用于接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()来实现的。通常一个广播Intent可以被订阅了此Intent的多个广播接收者所接收,这个特性跟JMS中的Topic消息接收者类似。要实现一个广播接收者方法如下:

第一步:继承BroadcastReceiver,并重写onReceive()方法。
public class IncomingSMSReceiver extends BroadcastReceiver {
     @Override public void onReceive(Context context, Intent intent) {
     }
}

第二步:订阅感兴趣的广播Intent,订阅方法有两种:
第一种:使用代码进行订阅
IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
IncomingSMSReceiver receiver = new IncomingSMSReceiver();
registerReceiver(receiver, filter);

第二种:在AndroidManifest.xml文件中的<application>节点里进行订阅:
<receiver android:name=".IncomingSMSReceiver">
    <intent-filter>
         <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
    </intent-filter>
</receiver>





----------------------------------------------------------------------------------------------

ip拨号器:



public class MainActivity extends Activity {

      
      private EditText  et_ipnumber;
      private SharedPreferences  sp;
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
            setContentView(R.layout. activity_main);
            
             et_ipnumber=(EditText) findViewById(R.id. et_ipnumber);
             sp=getSharedPreferences( "config", MODE_PRIVATE);
      }
      
      
      /**
       * 设置 ip
       */
      public void click(View view){
            
            String ipNumber= et_ipnumber.getText().toString().trim();
            
             //将ipnumber 方法sp存储器中
            Editor edit = sp.edit();
            edit.putString( "ipNumber", ipNumber);
            edit.commit();
            
            
      }
      
      

}


------------------------------------------------------------------------------------------




public class OutCallReceiver extends BroadcastReceiver {

      /**
       * 根据AndroidManifest.xml中配置一拨打电话就调用该方法
       */
      @Override
      public void onReceive(Context context, Intent intent) {
            
             //创建sp ,拿到存储器中的数据
            SharedPreferences  sp=context.getSharedPreferences("config" ,context.MODE_PRIVATE);
            String ipNumber = sp.getString( "ipNumber", "");
            
            String number = getResultData();    //获取拨打的号码
            setResultData(ipNumber+ number);   //重新设置要拨打的电话
            
            
      }

}




        <!--广播接收者配置(设置广播频道)  -->
          <receiver android:name="com.itheima.ipdail.OutCallReceiver" >
              <intent-filter >
                  <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
                
                 
              </intent-filter>
             
             
          </receiver>













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值