我有一个广播接收器类,当我收到特定的广播时,我想停止前台通知。所以我尝试了context.stopForeground()
,但是intellisense没有显示方法。我们如何在广播接收器类中调用stopForeground()
方法?
public class Broad extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction()==Const.ACTION_STOP)
{
// unable to call like this
context.stopForeground();
}
}
}
答案 0 :(得分:1)
stopForeground()
是Service
类的一部分,因此无法从接收方或提供给它的context
调用它。
要在现有BroadcastReceiver
中设置Service
作为实例变量:
private final BroadcastReceiver mYReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Bla bla bla
stopForeground(NOTIF_ID);
};
您只能在Service
{可能在onStartCommand()
上)注册此接收器,使用:
IntentFilter iFilter = new IntentFilter("my.awesome.intent.filter");
registerReceiver(mYReceiver, iFilter);
只要您点击mYReceiver
的广播,您就可以启用IntentFilter
,您可以在应用中的任何位置执行以下操作:
sendBroadcast(new Intent("my.awesome.intent.filter"))
答案 1 :(得分:0)
如果你想从广播接收器中停止它 //在你的接收器中
@Override
public void onReceive(Context context, Intent intent) {
context.stopService(new Intent(context, YourService.class);
}
同时在相关服务的onDestroy方法中添加stopForground(true)