Android应用开发之短信窃听器(补充)

来源:互联网 发布:秦皇岛网络问政平台 编辑:程序博客网 时间:2024/04/30 15:57

除了短信到来广播 Intent , Android 还有很多广播Intent ,如:开机启动、电池电量变化、时间已经改变等广播Intent 。

 

l 接收电池电量变化广播 Intent ,在AndroidManifest.xml 文件中的 <application>

节点里订阅此 Intent:

<receiver android:name=".IncomingSMSReceiver"><intent-filter>   <action android:name="android.intent.action.BATTERY_CHANGED"/></intent-filter></receiver>

l 接收开机启动广播 Intent , 在AndroidManifest.xml 文件中的 <application> 节点里

订阅此 Intent:

<receiver android:name=".IncomingSMSReceiver"><intent-filter>  <action android:name=”android.intent.action.BOOT_COMPLETED” /></intent-filter><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

通常一个 BroadcastReceiver 对象的生命周期不超过5 秒 , 所以在BroadcastReceiver里不能做一些比较耗时的操作 , 如果需要完成一项比较耗时的工作 , 可以通过发送 Intent给 Activity 或Service ,由 Activity 或 Service 来完成。

public class IncomingSMSReceiver extends BroadcastReceiver {public void onReceive(Context context, Intent intent) {// 发送 Intent 启动服务,由服务来完成比较耗时的操作Intent service = new Intent(context, XxxService.class);context.startService(service);// 发送 Intent 启动 Activity ,由 Activity 来完成比较耗时的操作Intent newIntent = new Intent(context, XxxActivity.class);context.startActivity(newIntent);}}

当然, 实现了BroadcastReceiver ,有时你可能会觉得不需要它 , 那么你可以将已经注册好的BroadcastReceiver 进行注销 :

unregisterReceiver( BroadcastReceiver receiver) ;