Всплывающее окно по входящему вызову

Я хочу создать настраиваемое всплывающее окно на экране входящих вызовов Android, где я хочу добавить информацию для пользователя. Я хочу, чтобы всплывающее окно не отключило какую-либо кликабельность в фоновом режиме, чтобы пользователь мог ответить на вызов.

Я знаю, что это возможно, поскольку это делают многие приложения, например приложение MeZeZe : введите описание изображения здесь

Дополнительная информация :

  1. Полупрозрачная тема не работала, так как она отменяет кликабельность прежней активности.
  2. Тост не вариант – я не хочу, чтобы он исчез.
  3. Я знаю, что существует много подобных streamов – я читал многие из них, и никто не ответил на мою конкретную проблему.
  4. Я уже знаю, как «сделать что-то случится», как только звонок будет приемником, поэтому нет необходимости в подсказках активности INCOMING_CALL.

Поблагодарили бы за любую помощь! благодаря

    Если вы хотите, чтобы активность звонка по-прежнему была нажата, но у вас нет элементов управления на вашем оверлее, вы можете сделать это, позвонив

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL); 

    В методе onCreate () активности, отображаемой по вызову.

    Параметры макета, которые можно использовать вместе с этим:

     android:windowBackground="@android:color/transparent" android:windowIsTranslucent="true" android:windowAnimationStyle="@android:style/Animation.Translucent" 

    Это сработало для меня с несколькими дополнениями:

    В BroadcastReceiver я добавил следующие намерения:

      i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 

    Кроме того, я добавил задержку примерно 1,5 секунды, прежде чем я запустил PopupWindow, чтобы убедиться, что он идет после экрана системы входящих вызовов.

    В файле манифеста я добавил:

       

    чтобы макет всплывающего экрана был полупрозрачным.

    В XML-файле макета Popupscreen я добавил следующие свойства:

      android:windowAnimationStyle="@android:style/Animation.Translucent" android:windowBackground="@android:color/transparent" android:windowIsTranslucent="true" 

    Однако это решение все еще имеет недостаток:

    Всплывающий экран появляется над экраном системы входящих вызовов, и поэтому пользователь должен выполнить действие (например, нажатие кнопки, нажатие клавиши или касание экрана), чтобы закрыть всплывающее окно, так как экран входящих вызовов остается под ним и не работает до тех пор, пока всплывающий экран не будет закрыт.

    Он не только покажет активность на экране блокировки, но также позволит принимать входящий вызов за экраном активности.

     @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Window win = getWindow(); win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); win.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL); setContentView(R.layout.activity_main); 
    Давайте будем гением компьютера.