How to stop a running service using broadcast receiver in android

时光总嘲笑我的痴心妄想 提交于 2019-12-13 07:37:33

问题


I think there is a simple problem in my code but I couldn't figure it out. I have a HeaderService which shows a bubble popup over some particular apps. Now what I want is stop that service when user presses Home key or Back key using BroadCastReceiver. Please take a look at my code and suggest me some solution. Thanks in Advance!!

This is my Receiver class

public class PopupClosingReceiver extends BroadcastReceiver {


private boolean isMyServiceRunning(Context con) {
    ActivityManager manager = (ActivityManager) con.getSystemService(Context.ACTIVITY_SERVICE);
    for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
        if (HeaderService.class.getName().equals(service.service.getClassName())) {
            return true;
        }
    }
    return false;
}

@Override
public void onReceive(Context context, Intent intent) {

    if(isMyServiceRunning(context)){

        Intent serviceIntent = new Intent(context, HeaderService.class);
        context.stopService(serviceIntent);

    }

}

AndroidManifest.xml

<receiver android:name=".PopupClosingReceiver">
        <intent-filter>
            <category android:name="android.intent.category.HOME"/>
        </intent-filter>
    </receiver>

来源:https://stackoverflow.com/questions/43981847/how-to-stop-a-running-service-using-broadcast-receiver-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!