インテントregisterReceiver
を受け取るには、(マニフェストで定義されていない) 呼び出す必要があると言及されている投稿を見てきました。ACTION_BATTERY_LOW
public class MainActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
//....
registerReceiver(new BatteryLevelReceiver(), new IntentFilter(
Intent.ACTION_BATTERY_LOW));
}
// .......
}
ブロードキャストレシーバー
public class BatteryLevelReceiver extends BroadcastReceiver
{
private static final String TAG = BatteryLevelReceiver.class.getSimpleName();
@Override
public void onReceive(Context context, Intent intent)
{
Log.d(TAG, "onReceive");
}
}
logcat に「onReceive」ログ ステートメントが表示されません。エミュレータを使用して、バッテリの低い状態をシミュレートし、 を使用telnet 5554
して実行してpower capacity 10
います。エミュレーターでバッテリーの状態が変化しているのがわかりますが、インテントはトリガーされません。
またregisterReceiver()
、アクティビティ内で呼び出す必要がありunregisterReceiver
、onStop
またはonDestroy
を呼び出さなくても大丈夫ですか? うまくいかない場合、アプリがフォアグラウンドにない場合でもシステム インテントを受信するようにレシーバーを登録するにはどうすればよいですか? (マニフェストの使用は別として)。