Наша цель состоит в том, чтобы показать тост, когда происходит входящий звонок. Это не сработает, когда устройство заблокировано и произойдет входящий вызов. Затем за "запертым полноэкранным представлением вызова" отображается тост.
Мы пробовали разные настройки с похожим результатом:
- PhoneCallListener/BroadCastReciver
- Вместо тоста используйте новый Intent с некоторыми флагами (ShowOnLockScreen и т.д.),
Разрешение:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
Настройка для PhoneCallListener:
public class PhoneCallDetector : PhoneStateListener
{
public override void OnCallStateChanged(CallState state, string incomingNumber)
{
ShowToast(incomingNumber);
base.OnCallStateChanged(state, incomingNumber);
}
private void ShowToast(string phonenumber)
{
Toast toast = Toast.MakeText(Application.Context, phonenumber, ToastLength.Long);
toast.SetGravity(GravityFlags.Center, 0, 0);
toast.Show();
}
}
Мы знаем некоторые приложения, которые могут успешно отображать тосты по "заблокированному всплывающему экрану во всплывающем представлении вызова", но они написаны в java... Они также не делают ничего особенного, чем Toast.MakeText(....).
Изменение: => Жизнь PhoneStateListener в фоновом режиме. Начинается с сервиса.
Как начать работу?
Intent serviceStart = new Intent(context, typeof(PhoneCallService));
context.StartService(serviceStart);
Как вызывается PhoneCallDetector?
var phoneCallDetector = m_scope.Resolve<PhoneCallDetector>();
var tm = (TelephonyManager)GetSystemService(TelephonyService);
tm.Listen(phoneCallDetector, PhoneStateListenerFlags.CallState);
Спасибо за помощь :-)