在打开wifi时警告用户;我想在屏幕上显示一个弹出窗口。我试图通过广播和服务来做到这一点。但是,该应用程序被终止后,它不起作用。
我的服务代码:
public class AlertService extends Service {
private static Context context;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
final AlertDialog alertDialog = new AlertDialog.Builder(AlertService.this).create();
alertDialog.setMessage("Nek Test");
alertDialog.setTitle("Reminder");
alertDialog.setButton("Got it", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
}else{
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
}
new CountDownTimer(1000, 1000) {
public void onTick(long millisUntilFinished) {
}
public void onFinish() {
alertDialog.show();
}
}.start();
return flags;
}
MainActivity:
private BroadcastReceiver wifiStateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
int wifiStateExtra = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,WifiManager.WIFI_STATE_UNKNOWN);
switch (wifiStateExtra){
case WifiManager.WIFI_STATE_ENABLED:
this.context = context;
startService(new Intent(context, AlertService.class));
break;
case WifiManager.WIFI_STATE_DISABLED:
break;
}
}
};
不幸的是,如果应用在最近的Android设备上被杀死,您将无法从后台启动活动。
我可以建议您做以下事情:1.终止应用程序后,检查您的服务是否继续运行。如果不是,则需要使其独立于应用程序生命周期。2.您可以显示吐司\全屏意图通知用户