Диалог не виден в Oreo, хотя я вручную зашел в настройки и разрешил разрешение - PullRequest
0 голосов
/ 26 февраля 2019

Я зашел в Настройки разрешений на моем телефоне и после Отображение всплывающего окна - щелкнул флажок Код:

private void showAlertDialog(final Context context) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.myPasscodeAlertDialog)
                .setCancelable(false);

        View view = inflater
                .inflate(R.layout.row_passcode_dialog, null);
        passcode = view.findViewById(R.id.passcode);

        forgot = view.findViewById(R.id.forgot);
        setTextWatcher();
        setClickListener();
        builder.setView(view);


        dialog = builder.create();
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

        if (Build.VERSION.SDK_INT >= 27) {
                dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
        } else {
            dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST);
        }
        dialog.show();


    }

Я вызвал вышеупомянутый метод отсюда, и он работает нормально длядругая версия:

@Override
    public void onActivityStarted(Activity activity) {
        if (++activityReferences == 1 && !isActivityChangingConfigurations) {
            showAlertDialog(getApplicationContext());
            if (CREATE_PASSCODE_ACTIVITY == 0) {
                dialog.show();
            }
        }
    }

Манифест:

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.ACTION_MANAGE_OVERLAY_PERMISSION" />

Это означает, что TYPE.APPLICATION.OVERLAY не используется. Что мне делать?Я перепробовал все.По крайней мере, для целей тестирования он должен работать на моем Redmi Note 5 Pro 8.0.1

1 Ответ

0 голосов
/ 26 февраля 2019

Вы должны попробовать изменить условие if, как это, однако я не уверен, сработает ли оно или нет:

if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){
    dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
        } else {
            dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST);
        }
        dialog.show(); 
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...