диалоговое окно блокировки экрана входящего вызова

Я хочу, чтобы и диалоговое окно, и экран входящего вызова были кликабельны. Я пробовал разные решения с этого сайта, но некоторые работают в одних условиях, а другие нет. Я хочу создать приложение, подобное истинному вызывающему абоненту, я вызвал действие из BroadcastReceiver. Мой код отлично работает, когда экран не заблокирован, потому что входящий экран не является полноэкранным. Но когда экран является полноэкранным, диалоговая активность появляется на несколько миллисекунд над экраном вызова, а затем уходит за экран вызова.

Вот мой код моей активности, который я вызвал из BroadcastReceiver

public class IncomingCallActivity extends AppCompatActivity {

private static final int MSG_ID_CHECK_TOP_ACTIVITY = 1;

private String userName;
private String TAG = IncomingCallActivity.class.getSimpleName();
private Window wind;

private PowerManager powerManager;
private PowerManager.WakeLock wakeLock;

/*private ActivityManager mActivityManager;
private boolean mDismissed = false;*/

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    wind = this.getWindow();
    wind.requestFeature(Window.FEATURE_NO_TITLE);
    wind.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
    wind.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    wind.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    wind.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);

    powerManager = (PowerManager)getSystemService(Context.POWER_SERVICE);
    wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Lock");
    wakeLock.acquire();

    setContentView(R.layout.activity_incoming_call);
    userName = getIntent().getStringExtra(IncomingCallReceiver.NAME_KEY);

    final TextView textView = (TextView) findViewById(R.id.tvUsername);
    textView.setText(userName);

    final ImageView ivCancel = (ImageView) findViewById(R.id.ivCancel);
    ivCancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            wakeLock.release();
            IncomingCallActivity.this.finish();
        }
    });

}

}


person Rakesh Yadav    schedule 09.03.2017    source источник


Ответы (1)


person    schedule
comment
Я также пробовал это, это сделает входящий экран неактивным, я хочу, чтобы оба экрана были интерактивными. - person Rakesh Yadav; 09.03.2017
comment
Добавьте тот же параметр окна, что вы не столкнетесь с этой проблемой. Я использую тот же код для отображения всплывающего окна при входящем вызове. И попробуйте добавить диалоговое окно как LayoutInflater inflater = (LayoutInflater) myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mDialogView = inflater.inflate (R.layout.small_pop_up_layout, ноль); - person Gautam Dev; 09.03.2017
comment
Да, это работало с заданными параметрами. Огромное (большое) спасибо Гаутам. Я долго мучился. - person Rakesh Yadav; 09.03.2017
comment
TYPE_SYSTEM_ERROR устарела. любая альтернатива? - person Sagar Nayak; 15.01.2020