public override async void OnReceive(Context context, Intent intent) { var sharedPref = context.GetSharedPreferences(MainActivity.PrefName, FileCreationMode.Private); if (!sharedPref.GetBoolean(MainActivity.ifAutoLoginPrefKey, false)) { return; } if (working) { return; } working = true; NetworkInfo info = (NetworkInfo)intent.GetParcelableExtra(WifiManager.ExtraNetworkInfo); System.Diagnostics.Debug.WriteLine($"{info.GetState()}/{info.GetDetailedState()}"); if (info.IsConnected) { WifiInfo wifiInfo = (WifiInfo)intent.GetParcelableExtra(WifiManager.ExtraWifiInfo); if (wifiInfo != null && wifiInfo.SSID.Contains(Shared.ScutStudentClient.wifiSsid)) { Shared.ScutStudentClient client = new Shared.ScutStudentClient(); await client.TryGetStatus(); if (client.Status == Shared.ScutStudentClientStatus.NeedLogin) { string userName = sharedPref.GetString(MainActivity.usernamePrefKey, string.Empty); string password = sharedPref.GetString(MainActivity.passwordPrefKey, string.Empty); Notification.Builder builder = new Notification.Builder(context); int notificationId; try { await client.Login(userName, password); sharedPref.Edit().PutString(MainActivity.wlanAcIpPrefKey, client.WlanAcIp).Apply(); builder.SetContentTitle("自动登录scut-student成功") .SetContentText($"账户:{userName}") .SetSmallIcon(Resource.Drawable.ic_wifi_lock_white_24dp); notificationId = succeedNotificationId; } catch (Exception e) { builder.SetContentTitle("自动登录scut-student失败") .SetContentText(e.Message) .SetSmallIcon(Resource.Drawable.ic_perm_scan_wifi_white_24dp); notificationId = failedNotificationId; } var resultIntent = new Intent(context, typeof(MainActivity)); TaskStackBuilder stackBuilder = TaskStackBuilder.Create(context); stackBuilder.AddParentStack(Java.Lang.Class.FromType(typeof(MainActivity))); stackBuilder.AddNextIntent(resultIntent); PendingIntent resultPendingIntent = stackBuilder.GetPendingIntent(0, PendingIntentFlags.UpdateCurrent); builder.SetContentIntent(resultPendingIntent); Notification notification = builder.Build(); NotificationManager notificationManager = context.GetSystemService(Context.NotificationService) as NotificationManager; notificationManager.Notify(notificationId, notification); } } } working = false; }