我是 Android 编程的新手。 我试过在 Activity 中注册广播接收器,但当应用程序暂停时我的接收器不工作。 所以我发现我需要在 list 中注册我的接收器。
我的目标是在用户关闭 Wifi 后关闭我的应用程序一段时间。
这是我的代码,但它不起作用。
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;
}
}
}
}
我的 list :
<receiver android:name="com.example.wifimonitor.ReceiverWifi" >
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
</receiver>
我如何实现我的目标?
最佳答案
使用下面的代码从 BroadcastReceiver 向 MainActivity 发送新的 Intent :
Intent i = new Intent(context, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags (Intent.FLAG_ACTIVITY_SINGLE_TOP);
i.putExtra("close_activity",true);
context.startActivity(i);
在 MainActivity 中使用 OnNewIntent 如下:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if(intent.getBooleanExtra("close_activity",false)){
this.finish();
}
}
仅供引用,我没有尝试过上面的代码,但我有类似的代码。
关于android - 从广播接收器关闭应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26134560/