Androidアプリケーション開発のメール盗聴器(補足)


ショートメッセージが放送されるほか、Androidには起動、バッテリーの電力量の変化、時間の変化などの放送Intentがたくさんあります.
 
lバッテリーの変化を受信してIntentを放送し、AndroidManifestにある.xmlファイルの<アプリケーション>
ノードでこのIntentを購読します.
<receiver android:name=".IncomingSMSReceiver">
<intent-filter>
   <action android:name="android.intent.action.BATTERY_CHANGED"/>
</intent-filter>
</receiver>

l AndroidManifestで起動放送を受信する.xmlファイルの<アプリケーション>ノードに
この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では時間のかかる操作はできません.時間のかかる作業を完了する必要がある場合は、ActivityまたはServiceにIntentを送信して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) ;