android.view.WindowManager $ BadTokenException: невозможно добавить окно - нулевой токен для displayid = 0 недопустим;ваша деятельность работает? - PullRequest
0 голосов
/ 31 октября 2019

Я хочу, чтобы диалоговое окно предупреждения отображалось из службы, но оно выдает мне ошибку android.view.WindowManager $ BadTokenException: невозможно добавить окно - нулевой токен для displayid = 0 недействителен;ваша деятельность запущена?

        String[] qualityList = getApplicationContext().getResources().getStringArray(R.array.quality_types);
        AlertDialog.Builder builder1 = new AlertDialog.Builder(this);
        builder1.setTitle("Quality");
        builder1.setItems(qualityList, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                if(dialog!= null) {
                    quality = qualityList[which];
                }
            }
        });
        builder1.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });
        int LAYOUT_FLAG;

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_APPLICATION_PANEL;
        }
        else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
        }
        else
        {
            LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_PHONE;
        }

        AlertDialog alertDialog = builder1.create();
        alertDialog.getWindow().setType(LAYOUT_FLAG);
        alertDialog.show();

Я также добавил разрешение в файл манифеста Android

...