从广播接收器关闭应用程序 [英] Close application from broadcast receiver

查看:180
本文介绍了从广播接收器关闭应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在机器人编程新。
我试过在活动注册广播接收器,但是当应用程序的onPause我的接收器不工作。
所以,我发现我需要在清单注册我的接收器。

I'm new in android programming. I've tried registering broadcast receiver in activity, but my receiver not working when apps onPause. So i found that i need to registering my receiver in manifest.

我的目标是关闭了一段时间的用户关闭后无线我的申请。

My objective is to close my application for some time after user turn off Wifi.

这是我的code,但它不工作。

This is my code but its not working.

public class ReceiverWifi extends BroadcastReceiver {

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

        Handler handler = new Handler();
        Runnable runnable = new Runnable() {

            @Override
            public void run() {
                MainActivity m = new MainActivity();
                m.finish();

            }
        };

        if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {

            int newWifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
                    WifiManager.WIFI_STATE_UNKNOWN);

            switch (newWifiState) {

            case WifiManager.WIFI_STATE_DISABLED:

                Toast.makeText(context, "Wi-fi Disconnected ",
                        Toast.LENGTH_SHORT).show();

                handler.postDelayed(runnable, 15 * 1000);
                break;

            }
        }

    }
}

我的清单:

<receiver android:name="com.example.wifimonitor.ReceiverWifi" >
    <intent-filter>
        <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
    </intent-filter>
</receiver>

我如何实现我的目标?

How do i achieve my objective?

推荐答案

您广播接收机在主活动课?如果这样可以节省你的应用程序的全球背景下,后来在广播接收器关闭它。

Your broadcast receiver is in the main activity class? If so you can save a global context of your app and close it later in the broadcast receiver.

如果它是一个服务或提供者,只需将您的应用程序的一个实例,就当你开始/注册。然后调用从该实例完成()。

If it is on a service or provider, just send an instance of your app to it when you start/register it. Then you call finish() from that instance.

编辑:

试试这个:

在您的主要活动创建这个公用方法:

In your main activity create this public method:

   public static void closeActivity(){
        finish();
   }

然后在你的广播接收器调用该方法,如:

Then in your broadcast receiver call this method like:

   MainActivity.closeActivity();

希望它帮助;)

这篇关于从广播接收器关闭应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆