android.intent.action.BATTERY_CHANGED仅在电池电平变化时才注册接收器

时间:2014-07-21 21:26:41

标签: android android-intent android-broadcast

我正在开发一个Android项目,我正在为android.intent.action.BATTERY_CHANGED注册一个广播接收器。我只希望在水平为100%时处理,以表明电池已充满电。

但是,一旦广播注册,我就会收到说电池状态已经改变的意图。

首次注册意图时,有没有办法停止接收广播?

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

不,如果您已注册,将收到广播。你可以试试这个:

private BroadcastReceiver mBatInfoReceiver = null;

@Override
protected void onCreate( final Bundle savedInstanceState ) {
    super.onCreate( savedInstanceState );
    this.setContentView( R.layout.activity_main );
    this.mBatInfoReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive( final Context ctxt, final Intent intent ) {
            final int level = intent.getIntExtra( BatteryManager.EXTRA_LEVEL, 0 );
            if ( level == 100 ) {
                // do something
            }

        }
    };

    this.registerReceiver( this.mBatInfoReceiver, new IntentFilter( Intent.ACTION_BATTERY_CHANGED ) );


}

答案 1 :(得分:0)

不,没有真正的旋钮。您已注册,或者您未注册。您可以做的是在接收器中设置一个默认变量为false的静态变量。在你的onReceive中,查看该变量。如果它为假,则将其设置为true并返回(不执行任何操作)。它是真的,处理事件。它需要是静态的,因为如果通过清单启动接收器,则接收器不一定是调用之间的对象(通过registerReceiver注册时无法检查)。