
The reason for this exception is that, as the exception message says, Or back button or activity clean up made by Android then you get this If you are trying to modify the UI from background thread (usuallyįrom onPostExecute() of AsyncTask) and if the activity entersįinishing stage i.e.) explicitly calling finish(), user pressing home The background thread (AsyncTask) by opening a Dialog.

This exception occurs when the app is trying to notify the user from I compared the API level 25 Toast class and others for the difference and I found an interesting thing there:įrom API 25, Android added a new param IBinder windowToken for Toast#handleShow(), and It brought an exception.Solution 1 $BadTokenException: Unable to add window" So now, after all, my research and analysis on BadTokenException, what I noticed about all the crashes there on Crashltyics: If returned the WindowManagerGlobal.ADD_BAD_APP_TOKEN, the exception occurs when the WMS.addWindow () function is called to check whether the window to be added is not in violation of the policy according to the android window policy. Return WindowManagerGlobal.ADD_BAD_APP_TOKEN This ensures secure interaction between the application and the window manager (by making it impossible to add windows on top of other applications), and also makes it easy for the activity manager to make direct requests to the window manager.Īnd the code that throws “BadTokenException” : The activity manager gives this token to both the (*application) and the window manager, and it sends the token to the window manager each time it wants to add a new window to the screen. When an application starts up for the first time, the ActivityManagerService creates a special kind of window token called an application window token, which uniquely identifies the application’s top-level container window.

Without window tokens, this necessary identification step wouldn’t be possible and the window manager wouldn’t be able to protect itself from malicious applications. If the tokens don’t match, the window manager rejects the request and throws a BadTokenException. The window manager protects against this by requiring applications to pass their application’s window token as part of each request to add or remove a window. Window tokens are important for security reasons because they make it impossible for malicious applications to draw on top of the windows of other applications. Window Tokens:Īs the name suggest, a window token is a special type of Binder token used by window manager to uniquely identify a window in the system. WindowManagerService (WMS) is a system service that manages the windows on Android.
