Есть ли способ определить, может ли телефон в момент выполнения вызова выполнять только экстренные вызовы (используя Xamarin)?Как обнаружить экстренный вызов только в Xamarin?
ответ
Это нечто специфичное для платформы. Unfortuneelty Я не знаю никаких плагинов для этого, поэтому вам нужно использовать собственный API в Xamarin.
На Android это TelephonyManager
, как показано здесь: https://stackoverflow.com/a/14355706/1489968 Это Java, но может быть легко переведены на C#:
public class MainActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
var telMng = (TelephonyManager) GetSystemService(TelephonyService);
var myPhoneStateListener = new MyPhoneStateListener();
myPhoneStateListener.ServiceStateChanged += (s, e) => Console.WriteLine("State: {0}", e);
telMng.Listen(myPhoneStateListener, PhoneStateListenerFlags.ServiceState);
}
}
public class MyPhoneStateListener : PhoneStateListener
{
public event EventHandler<ServiceState> ServiceStateChanged;
public override void OnServiceStateChanged(ServiceState serviceState)
{
base.OnServiceStateChanged(serviceState);
ServiceStateChanged?.Invoke(this, serviceState);
}
}
КСН: Не уверен, что если эта информация доступна, никогда не видел его воздействию через SDK ... (возможно, добавьте тег iOS на этот вопрос или задайте вопрос iOS only
, ответ может быть в ObjC/Swift, но вы можете перевести его)
На Android: информация, которую вы ищете, содержится в ServiceState
телефона:
var callState = new ServiceState();
switch (callState.State) {
case PhoneState.InService:
{
var uri = Android.Net.Uri.Parse ("tel:555-2368"); // Jim Rockford's number ;-)
var intent = new Intent (Intent.ActionDial, uri);
StartActivity (intent);
break;
}
case PhoneState.EmergencyOnly:
{
Toast.MakeText (this, "Emergency Calls Only", ToastLength.Long).Show();
break;
}
case PhoneState.OutOfService:
{
Toast.MakeText (this, "Out of Service", ToastLength.Long).Show();
break;
}
case PhoneState.PowerOff:
{
Toast.MakeText (this, "Cell/Modem Power Off", ToastLength.Long).Show();
break;
}
default:
{
Toast.MakeText (this, "Should never be shown on a real device", ToastLength.Long).Show();
break;
}
}
Ref: http://developer.android.com/reference/android/telephony/ServiceState.html
Для тестирования на эмуляторе, вы можете установить состояние в denied
через adb
оболочки:
voice denied
data denied
Ref: https://developer.android.com/tools/devices/emulator.html
- 1. Экстренный вызов
- 2. Экстренный вызов: нет возможности обнаружить и помочь пользователю
- 3. Программируем экстренный вызов на iPhone
- 4. Экстренный прослушиватель работает только в режиме отладки
- 5. Как обнаружить Selector.wakeup вызов
- 6. jQuery: обнаружить вызов ajax
- 7. Как обнаружить UilLabel содержат хвост «...» IOS/Xamarin
- 8. Как обнаружить вкладку касались формы xamarin TabbedPage
- 9. Экстренный экземпляр для Data.AVL
- 10. Как обнаружить вызов в сообщении C#
- 11. В ионном режиме, как обнаружить входящий вызов
- 12. Экстренный прослушиватель в Java wait
- 13. экстренный прослушиватель не работает
- 14. Экстренный прослушиватель для нескольких переключателей
- 15. Как работает Android OS «» обнаружить входящий вызов
- 16. Как обнаружить вызов ajax на Facebook
- 17. Как обнаружить только обновление браузера
- 18. Не удается обнаружить устройства Bluetooth Xamarin Android
- 19. Как обнаружить только короткие краны
- 20. Экстренный прослушиватель, вход на клавиатуре
- 21. Как обнаружить Tab показать/скрыть в Xamarin форм и XAML
- 22. Экстренный приемник combo box в ext.net
- 23. Как обнаружить касание только в части экрана?
- 24. Powershell: экстренный эквивалент для оператора «&»?
- 25. Как обнаружить вызов Drop in android
- 26. Как обнаружить, что Окно израсходовало вызов «ShowDialog»
- 27. Как обнаружить вызов ajax внутри php-функции
- 28. Экстренный прослушиватель для массива JButton
- 29. Как обнаружить C# Обратный вызов обработчика отправителя
- 30. Экстренный экземпляр Akka и класс
Работал для меня ... большое спасибо! – AlexJC