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