protected async override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); if (_LineWatcher == null) { PhoneCallStore store = await PhoneCallManager.RequestStoreAsync(); _LineWatcher = store.RequestLineWatcher(); _LineWatcher.LineAdded += _watcher_LineAdded; _LineWatcher.LineRemoved += _watcher_LineRemoved; _LineWatcher.Start(); } string str = PhoneLineTransportDevice.GetDeviceSelector(PhoneLineTransport.Bluetooth); if (_DeviceWatcher == null) { _DeviceWatcher = DeviceInformation.CreateWatcher(str); _DeviceWatcher.Added += _DeviceWatcher_Added; _DeviceWatcher.Removed += _DeviceWatcher_Removed; _DeviceWatcher.Start(); } string str1 = BluetoothDevice.GetDeviceSelector(); var watch = DeviceInformation.CreateWatcher(str1); watch.Added += _DeviceWatcher_Added; watch.Removed += _DeviceWatcher_Removed; watch.Start(); }
public static async Task Init() { var settings = ApplicationData.Current.LocalSettings.Values; if (settings.TryGetValue("deviceId", out object obj)) { if (obj is string) { string id = obj as string; if (!string.IsNullOrEmpty(id)) { DeviceInfo = await DeviceInformation.CreateFromIdAsync(id); await EnsureInitPhoneLineWatcher(); LineWatcher.Start(); } } else { settings.Remove("deviceId"); } } }
private async void Load() { string displayname = ""; if (device != null) { if (device.AccountPhoneNumber != null) { displayname = device.AccountPhoneNumber; } switch (device.DeviceStatus) { case SmsDeviceStatus.DeviceBlocked: { StatusIcon.Text = ""; var pad = StatusIcon.Padding; pad.Top = 0; StatusIcon.Padding = pad; break; } case SmsDeviceStatus.DeviceFailure: { StatusIcon.Text = ""; var pad = StatusIcon.Padding; pad.Top = 0; StatusIcon.Padding = pad; break; } case SmsDeviceStatus.DeviceLocked: { StatusIcon.Text = ""; break; } case SmsDeviceStatus.Off: { StatusIcon.Text = ""; var pad = StatusIcon.Padding; pad.Top = 0; StatusIcon.Padding = pad; break; } case SmsDeviceStatus.Ready: { StatusIcon.Text = ""; var pad = StatusIcon.Padding; pad.Top = 0; StatusIcon.Padding = pad; break; } case SmsDeviceStatus.SimNotInserted: case SmsDeviceStatus.SubscriptionNotActivated: case SmsDeviceStatus.BadSim: { StatusIcon.Text = ""; break; } } } try { string selectorStr = MobileBroadbandModem.GetDeviceSelector(); DeviceInformationCollection devices = await DeviceInformation.FindAllAsync(selectorStr); foreach (var mdevice in devices) { MobileBroadbandModem modem = MobileBroadbandModem.FromId(mdevice.Id); if (modem.DeviceInformation.TelephoneNumbers.Count > 0) { if (modem.DeviceInformation.TelephoneNumbers.Any(x => x == device.AccountPhoneNumber)) { displayname = modem.CurrentNetwork.RegisteredProviderName; // from https://github.com/ADeltaX/MobileShell/blob/experiments/src/App.xaml.cs PhoneCallStore store = await PhoneCallManager.RequestStoreAsync(); PhoneLineWatcher watcher = store.RequestLineWatcher(); List <PhoneLine> phoneLines = new List <PhoneLine>(); TaskCompletionSource <bool> lineEnumerationCompletion = new TaskCompletionSource <bool>(); watcher.LineAdded += async(o, args) => { var line = await PhoneLine.FromIdAsync(args.LineId); phoneLines.Add(line); }; watcher.Stopped += (o, args) => lineEnumerationCompletion.TrySetResult(false); watcher.EnumerationCompleted += (o, args) => lineEnumerationCompletion.TrySetResult(true); watcher.Start(); if (await lineEnumerationCompletion.Task) { watcher.Stop(); List <PhoneLine> returnedLines = new List <PhoneLine>(); foreach (PhoneLine phoneLine in phoneLines) { if (phoneLine != null && phoneLine.Transport == PhoneLineTransport.Cellular) { returnedLines.Add(phoneLine); } } if (returnedLines.Any(x => x.NetworkName == modem.CurrentNetwork.RegisteredProviderName)) { var line = returnedLines.First(x => x.NetworkName == modem.CurrentNetwork.RegisteredProviderName); displayname += " (SIM " + (line.CellularDetails.SimSlotIndex + 1) + ")"; } } break; } } } } catch { } if (string.IsNullOrEmpty(displayname)) { displayname = "Unidentified SIM"; } LineName.Text = displayname; }