android的广播分为动态注册和静态注册两种情况
首先先说下静态注册
静态注册就是在xml进行注册 代码如下:
java代码部分:
package com.example.tt;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class simidaReceive extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "接收到广播信息了,然后我就被打印了", Toast.LENGTH_LONG).show();
}
}
xml代码部分:
<receiver android:name="simidaReceive">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
当然还需要一个权限:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
这样就完成了一个广播的静态注册,在系统接收到短信时候会提示一个Toast信息。
效果如下:
动态注册:
java代码部分:
@Override
protected void onStart() {
//在onStart注册广播,和程序一起运行
receive = new simidaReceive();
IntentFilter filter = new IntentFilter(
"android.provider.Telephony.SMS_RECEIVED");
registerReceiver(receive, filter);
super.onStart();
}
@Override
protected void onStop() {
//在onStop取消广播接收
unregisterReceiver(receive);
super.onStop();
}
静态注册将会驻留在系统中,随着系统启动而启动,一直工作。如果没有必要,我推荐使用动态注册的方式来注册广播,这样将会节省系统资源和电量。