我正在开发一个Android项目,我正在为android.intent.action.BATTERY_CHANGED
注册一个广播接收器。我只希望在水平为100%时处理,以表明电池已充满电。
但是,一旦广播注册,我就会收到说电池状态已经改变的意图。
首次注册意图时,有没有办法停止接收广播?
感谢您的帮助
答案 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注册时无法检查)。