目录

  • 1 第一周 android简介
    • 1.1 第一课 Android基础入门1
    • 1.2 第二课 Android基础入门2
    • 1.3 第三课 Android UI开发介绍
  • 2 第二周 android布局
    • 2.1 第一课 Android 布局文件介绍1
    • 2.2 第二课 Android 布局文件介绍2
    • 2.3 第三课 Android 布局文件介绍3
  • 3 第三周 Android UI组件开发
    • 3.1 第一课 Button和ImageButton
    • 3.2 第二课 TextView和EditText
    • 3.3 第三课 RadioButton和CheckBox
  • 4 第四周 Android UI组件开发
    • 4.1 第一课 Spinner和ListView
    • 4.2 第二课 应用案例-手机信息页面
    • 4.3 第三课 Android生命周期
  • 5 第五周 Android组件通信
    • 5.1 第一课 Intent的介绍
    • 5.2 第二课 Intent实现各种系统功能
    • 5.3 第三课 应用案例-手机注册页面
  • 6 第六周 数据存储
    • 6.1 第一课 应用案例-新建联系人
    • 6.2 第二课 数据存储-简单文件存储
    • 6.3 第三课 SharedPreferences存储
  • 7 第七周 数据存储
    • 7.1 第一课 xml文件存储
    • 7.2 第二课 应用案例-植物百科
    • 7.3 第三课  ListView 组件高级使用
  • 8 第八周 SQLite数据库
    • 8.1 第一课 应用案例-应用列表
    • 8.2 第二课 使用SQLite数据库存储(创建数据库和表)
    • 8.3 第三课 使用SQLite数据库存储(对表数据操作)
  • 9 第九周 项目实战-商品购物车处理
    • 9.1 第一课 使用SQLite数据库存储(对表数据查询)
    • 9.2 第二课 商品购物车处理(布局)
    • 9.3 第三课 商品购物车处理(数据处理)
  • 10 第十周 内容提供者及广播
    • 10.1 第一课 内容提供者的使用
    • 10.2 第二课 广播概念以及如何使用
    • 10.3 第三课 自定义广播
  • 11 第十一周 广播和服务
    • 11.1 第一课 应用案例-电池电量
    • 11.2 第二课 应用案例-通话记录
    • 11.3 第三课 服务简介
  • 12 第十二周 服务应用
    • 12.1 第一课 应用案例—音乐播放器
    • 12.2 第二课 应用案例—地震监测
    • 12.3 第三课 获得手机SIM卡信息
  • 13 第十三周 网络编程
    • 13.1 第一课 网络编程入门
    • 13.2 第二课 使用HttpClient访问网络
    • 13.3 第三课 webview组件
  • 14 第十四周 网络编程应用案例
    • 14.1 第一课 消息机制简介
    • 14.2 第二课 应用案例-应用升级
    • 14.3 第三课 应用案例-应用升级
第二课 广播概念以及如何使用

一、广播接收者

实际生活中,电台用于发送广播,收音机用于接收广播。

Android系统中,内置了很多系统级别的广播,例如手机开机完成后会发送一条广播,电池电量不足时会发送一条广播等。

Android系统中提供了广播接收者BroadcastReceiver,广播接收者的作用就是接收来自系统或其他应用程序的广播,并作出回应。


广播(Broadcast是一种运用在应用程序之间传递消息的机制。

广播接收者(BroadcastReceiver是用来过滤、接收并响应广播的一类组件。

广播接收者可以监听系统中的广播消息,在不同组件之间进行通信

二、广播接收者创建与注册

要使用广播接收者接收其他应用程序发出的广播,先要在本应用中创建广播接收者并进行注册。

1、创建广播接收者

         public class MyBroadcastReceiverextendsBroadcastReceiver {

         @Override

         public void onReceive(Context context, Intent intent) {

                              ………

         }


注册广播有两种方式,常驻型广播与非常驻型广播。

 1、注册常驻型广播

 常驻型广播是当应用程序关闭后,如果接收到其他应用程序发出的广播,那么该程序会自动重新启动。常驻型广播在清单文件中注册。

   <receiver android:name="cn.itcast.MyBroadcastReceiver">  

        <intent-filter android:priority="20">  

             <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
        </intent-filter>  
   </receiver>


2、注册非常驻型广播

非常驻型广播依赖于注册广播的组件的生命周期,例如,在Activity中注册广播接收者,当Activity销毁后广播也随之被移除。这种广播事件在代码中注册。

     MyBroadCastReceiver receiver = new MyBroadCastReceiver();

     String action = "android.provider.Telephony.SMS_RECEIVED";

     IntentFilterintentFilter = new IntentFilter(action);

     registerReceiver(receiver, intentFilter);

     非常驻型广播可以在onDestory()方法中解除广播,具体代码如下:

     unregisterReceiver(receiver);


三、案例—IP拨号器

  广播接收者在Android系统中应用非常广泛,例如拨打长途电话时使用的IP拨号器,就是通过广播接收者实现的。接下来就通过一个案例来实现这个IP拨号器。


activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context=".MainActivity" >

    <EditText

        android:id="@+id/et_ipnumber"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:hint="请输入IP号码" />

    <Button

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_below="@+id/et_ipnumber"

        android:layout_centerHorizontal="true"

        android:onClick="click"

        android:text="设置IP号码" />

</RelativeLayout>


OutCallReceiver.java

public class OutCallReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

// 获取拨打的电话号码

String outcallnumber = getResultData();

// 创建SharedPreferences对象,获取该对象中存储的IP号码

SharedPreferences sp = context.getSharedPreferences("config",

Context.MODE_PRIVATE);

String ipnumber = sp.getString("ipnumber", "");

// 将IP号码添加到外拨电话的前面

setResultData(ipnumber + outcallnumber);

}

}

MainActivity.java

public class MainActivity extends Activity {

private EditText et_ipnumber;

private SharedPreferences sp; // 用于保存文件的

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

et_ipnumber = (EditText) findViewById(R.id.et_ipnumber);

// 创建SharedPreferences对象

sp = getSharedPreferences("config", MODE_PRIVATE);

// 从sp对象中获取存储的IP号码,并将号码显示到et_ipnumber控件中

et_ipnumber.setText(sp.getString("ipnumber", ""));

}

// "设置IP拨号按钮"的点击事件

public void click(View view) {

// 获取用户输入的IP号码

String ipnumber = et_ipnumber.getText().toString().trim();

// 创建Editor对象,保存用户输入的IP号码

Editor editor = sp.edit();

editor.putString("ipnumber", ipnumber);

editor.commit();

Toast.makeText(this, "设置成功", 0).show();

}

}