http://developer.android.com/reference/android/content/BroadcastReceiver.html
根据文档理解:普通广播Normal broadcasts用Context.sendBroadcast发送,是完全异步发送的,所有的广播接收器都运行时在同一时间内,但是次序未定。这样的好处是高效传输,缺点是接收器不能使用到结果或中止API.
- Normal broadcasts (sent with
Context.sendBroadcast
) are completely asynchronous. All receivers of the broadcast are run in an undefined order, often at the same time. This is more efficient, but means that receivers cannot use the result or abort(流产) APIs included here.
可以建立发送短信机制。如图:
建立工程Normal broadcasts,定义一个广播,声明一个类Receiver。
启用广播在activity中启动,清单文件中添加receive。
MainActivity.java文件中只是注册一个button事件,button在xml文件中已经标签好。
public class MainActivity extends Activity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) this.findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this, MyReceiver.class);
sendBroadcast(intent);
}
});
}
接收文件Receiver.java中定义广播的声明周期和发送的信息:
public class MyReceiver extends BroadcastReceiver {
private NotificationManager manager;
private Notification.Builder builder;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
manager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
builder = new Notification.Builder(context);
builder.setContentTitle("有短信来啦");
builder.setContentText("晚上有时间吗?");
builder.setSmallIcon(R.drawable.ic_launcher);
manager.notify(1001, builder.build());
}
}
AndroidManifest文件中一定要注册有
<receiver
android:name="com.example.android_broadcast_normal.MyReceiver" >
</receiver>