Je veux montrer PopupWindow
surtout la fenêtre (par exemple: une autre popupWindow, dialogue, un autre écran d'activité) sans demande SYSTEM_ALERT_WINDOW
donc j'utiliser WindowManager.LayoutParams.TYPE_TOAST
Afficher popupWindow avant tout fenêtre pour cible Android 26
public void showSimplePopupWindow() {
final View popupView = layoutInflater.inflate(R.layout.popup_layout_2, null);
final PopupWindow popupWindow = new PopupWindow(popupView);
...config popup window...
PopupWindowCompat.setWindowLayoutType(popupWindow, WindowManager.LayoutParams.TYPE_TOAST);
popupWindow.showAsDropDown(findViewById(R.id.button_show_popup_window));
}
Il fonctionne bien dans toute la version Android si je définis targetSdkVersion < 26
.
Actuellement, si je garde le code ci-dessus et mettre à jour la cible targetSdkVersion
-26 alors il se bloque avec dispositif api 25-26 à l'exception android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running?
Je vois que TYPE_TOAST
est dépréciée dans sdk 26
et ils suggèrent de utiliser TYPE_APPLICATION_OVERLAY
. Cependant, quand je l'utilise TYPE_APPLICATION_OVERLAY
, AndroidStudio
montrent TYPE_APPLICATION_OVERLAY
nécessaire api 26. Par conséquent, TYPE_APPLICATION_OVERLAY
ne fonctionnent bien avec le dispositif api 26, pour le dispositif api < 26, il plantera (même j'ai permis Display/Draw over other app
la permission)
est-il toute autre façon de faire TYPE_TOAST
travailler avec la cible api 26
? Toute aide ou suggestion serait grandement appréciée.
Je sais que ce n'est pas un moyen standard, mais en utilisant une activité transparente pour montrer popupWindow peut vous aider dans ce cas – misagh