Показать тост через PhoneScreen в LockState
Наша цель состоит в том, чтобы показать тост, когда происходит входящий звонок. Это не сработает, когда устройство заблокировано и произойдет входящий вызов. Затем за "запертым полноэкранным представлением вызова" отображается тост.
Мы пробовали разные настройки с похожим результатом:
- 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);
Спасибо за помощь :-)
Ответы
Ответ 1
Вы должны прочитать это, а также сослаться на эту ссылку.
Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS = "lock_screen_allow_private_notifications"
Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS = "lock_screen_show_notifications"
int ShowAll = Settings.Secure.getInt(getContentResolver(),"lock_screen_allow_private_notifications", -1);
int NotificationEnable = Settings.Secure.getInt(getContentResolver(),"lock_screen_show_notifications", -1);
if(ShowAll > 0 && NotificationEnable > 0){
//post notification
}
См. Также раздел: - Уведомления блокировки экрана