Отображать диалоговое окно над представлением, раздуваемым оконным менеджером в Android

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

Мой код для отображения диалогового окна:

    pDialog = new SweetAlertDialog(context, SweetAlertDialog.WARNING_TYPE)
            .setTitleText("Internet Error !")
            .setContentText("Do you want to enable internet?")
            .setCancelText("No,Cancel plz!")
            .setConfirmText("Yes,Enable it")
            .showCancelButton(true)
            .setCancelClickListener(
                    new SweetAlertDialog.OnSweetClickListener() {
                        @Override
                        public void onClick(SweetAlertDialog sDialog) {
                            sDialog.setTitleText("Cancelled!")
                                    .setContentText(
                                            "You Can't Enable Internet")
                                    .setConfirmText("OK")
                                    .showCancelButton(false)
                                    .setCancelClickListener(null)
                                    .setConfirmClickListener(null)
                                    .changeAlertType(
                                            SweetAlertDialog.ERROR_TYPE);

                        }
                    })
            .setConfirmClickListener(
                    new SweetAlertDialog.OnSweetClickListener() {

                        @Override
                        public void onClick(
                                SweetAlertDialog sweetAlertDialog) {

                            Intent intent = new Intent();
                            intent.setAction(Settings.ACTION_DATA_ROAMING_SETTINGS);
                            context.startActivity(intent);
                            sweetAlertDialog.dismiss();

                        }
                    });
    pDialog.getWindow().setType(
            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
    pDialog.show();

для раздувания макета в оконном менеджере:

    this.context = context;
    if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {

        Log.d("tagKrishna", "come in if");
    } else {
        Log.d("tagKrishna", "come in else");
        numLockView = View.inflate(context, R.layout.activity_receiver,
                null);
        numLockView2 = View.inflate(context,
                R.layout.activity_unclock_photo_lock_screen, null);
        numLockView3 = View.inflate(context,
                R.layout.unlock_pin_lock_screen, null);

        numLockView4 = View
                .inflate(context, R.layout.forget_passcode, null);

        bindView();
        // params = new WindowManager.LayoutParams(
        // WindowManager.LayoutParams.MATCH_PARENT,
        // WindowManager.LayoutParams.MATCH_PARENT,
        // 2003 ,
        // 262184, PixelFormat.TRANSLUCENT);
        params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
                WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD 
                        | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
                        | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
                        | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
                PixelFormat.TRANSLUCENT);
        windowManager = (WindowManager) context.getSystemService("window");
        windowManager.addView(numLockView, params);

        init();
        addListener();

    }

person KrishnaJ    schedule 08.05.2017    source источник
comment
Где код?   -  person Piyush    schedule 08.05.2017
comment
код добавлен для справки   -  person KrishnaJ    schedule 08.05.2017


Ответы (1)


person    schedule
comment
Нет, он не будет работать на замке. Если вы хотите показать диалог под замком, вам следует использовать Сервис для отображения диалога. Пожалуйста, проверьте это stackoverflow.com/questions/19074466/ - person Md Mobinur Rahman; 08.05.2017