Essay Writing Service
Posts: 0
Joined: Tue Nov 06, 2012 10:39 pm

android.view.WindowManager$BadTokenException

I already have my app in Google Play with 500+ installs, but today I found error report in developer console with the following text:

---------------------------------------------------------------

android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@4051d640 is not valid; is your activity running?
at android.view.ViewRoot.setView(ViewRoot.java:616)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:203)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:117)
at android.view.Window$LocalWindowManager.addView(Window.java:424)
at android.app.Dialog.show(Dialog.java:241)
at android.app.AlertDialog$Builder.show(AlertDialog.java:823)
at org.apache.cordova.Notification$1.run(Notification.java:175)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3691)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
at dalvik.system.NativeStart.main(Native Method)

----------------------------------------------------------------

I did some research and found this error related to getApplicationContext() function. the only place where it is - \src\com\phonegap\plugins\pushnotifications\gcm\MessageActivity.java

possible solution is to change getApplicationContext() to 'this', but I am not sure if it will help (I am not java expert). please, ask tiggzi developers what to do!

Kateryna Grynko
Posts: 0
Joined: Thu Nov 15, 2012 9:13 am

android.view.WindowManager$BadTokenException

Hello, we will find out.

Maryna Brodina
Posts: 0
Joined: Thu Apr 05, 2012 7:27 am

android.view.WindowManager$BadTokenException

Hello! It's a bug. Should be fixed soon.

Essay Writing Service
Posts: 0
Joined: Tue Nov 06, 2012 10:39 pm

android.view.WindowManager$BadTokenException

Are there any temporary ways to fix it?

Kateryna Grynko
Posts: 0
Joined: Thu Nov 15, 2012 9:13 am

android.view.WindowManager$BadTokenException

Hello,

possible solution is to change getApplicationContext() to 'this'
This should help.

You can export app to eclipse, open file "MessageActivity.java" and replace following line:codeString intentAction = getApplicationContext().getPackageName() + MESSAGE_HANDLER_KEY;/code
with:codeString intentAction = this.getPackageName() + MESSAGE_HANDLER_KEY;/code
Then you should build the app via Eclipse or Maven (Android SDK must be installed on your computer).

miker
Posts: 0
Joined: Sat Feb 09, 2013 9:40 pm

android.view.WindowManager$BadTokenException

I have an app that is generating the same error message. It's developed in eclipse, but I can't locate the MessageActivity.java file. Where would I find the file? Thanks.

miker
Posts: 0
Joined: Sat Feb 09, 2013 9:40 pm

android.view.WindowManager$BadTokenException

I am getting the same $BadTokenException in the simple app below.

MainActivity.java as follows:

package com.example.badtokenexample;

import android.os.Bundle;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.Spinner;

public class MainActivity extends Activity {

private String[] settingsItems = { "Entry 1", "Entry 2", "Entry 3",
"Entry 4" };

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button mainB = (Button) findViewById(R.id.MainB);
mainB.setOnClickListener(onSettings);

Spinner mainS = (Spinner) findViewById(R.id.MainS);
ArrayAdapter adapter =
ArrayAdapter.createFromResource( this, R.array.mainItems,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource
(android.R.layout.simple_spinner_dropdown_item);
mainS.setAdapter(adapter);
mainS.setOnItemSelectedListener(new
AdapterView.OnItemSelectedListener() {
@SuppressWarnings("rawtypes")
public void onItemSelected(AdapterView arg0, View v,
int i, long lng) {
}
public void onNothingSelected(
@SuppressWarnings("rawtypes")
AdapterView arg0) {
}
});

}

private View.OnClickListener onSettings = new View.OnClickListener() {
public void onClick(View v) {

Code: Select all

LayoutInflater layoutInflater = (LayoutInflater)  
                                                   getBaseContext() 
        .getSystemService 
                                                             (LAYOUT_INFLATER_SERVICE); 

View popupView = layoutInflater.inflate 
                                                    (R.layout.pusettings, null); 
final PopupWindow popupWindow = new 
                                                    PopupWindow(popupView, 
                                                          LayoutParams.WRAP_CONTENT, 
                                                               LayoutParams.WRAP_CONTENT); 

Spinner pusettingsS = (Spinner) 
                                                     popupView.findViewById(R.id.PuB); 
@SuppressWarnings({ "unchecked", "rawtypes" }) 
ArrayAdapter sAdapter = new 
                                                     ArrayAdapter(v.getContext(), 
                                                         android.R.layout.simple_spinner_item, 
                                                         settingsItems); 
pusettingsS.setAdapter(sAdapter); 
pusettingsS 
                                                    .setOnItemSelectedListener(new 
                                                    AdapterView.OnItemSelectedListener() { 
                                                         @SuppressWarnings("rawtypes") 
                                                              public void onItemSelected(AdapterView 
                                                                   arg0, View v, int i, long lng) { 
                                                    } 
public void onNothingSelected( 
                                               @SuppressWarnings("rawtypes") AdapterView arg0) { 
                                                } 
                                  }); 

popupWindow.showAsDropDown 
                                                   (pusettingsS, 10, 200); 

}
};

public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

}

activity_main.xml is as follows:

pusettings.xml is as follows:

And the error message is:

02-11 15:21:13.471: E/AndroidRuntime(795): FATAL EXCEPTION: main
02-11 15:21:13.471: E/AndroidRuntime(795): android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@40d0b800 is not valid; is your activity running?
02-11 15:21:13.471: E/AndroidRuntime(795): at android.view.ViewRootImpl.setView(ViewRootImpl.java:567)
02-11 15:21:13.471: E/AndroidRuntime(795): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:246)
02-11 15:21:13.471: E/AndroidRuntime(795): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
02-11 15:21:13.471: E/AndroidRuntime(795): at android.widget.PopupWindow.invokePopup(PopupWindow.java:993)
02-11 15:21:13.471: E/AndroidRuntime(795): at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:899)
02-11 15:21:13.471: E/AndroidRuntime(795): at android.widget.ListPopupWindow.show(ListPopupWindow.java:603)
02-11 15:21:13.471: E/AndroidRuntime(795): at android.widget.Spinner$DropdownPopup.show(Spinner.java:981)
02-11 15:21:13.471: E/AndroidRuntime(795): at android.widget.Spinner.performClick(Spinner.java:609)
02-11 15:21:13.471: E/AndroidRuntime(795): at android.view.View$PerformClick.run(View.java:17340)
02-11 15:21:13.471: E/AndroidRuntime(795): at android.os.Handler.handleCallback(Handler.java:725)
02-11 15:21:13.471: E/AndroidRuntime(795): at android.os.Handler.dispatchMessage(Handler.java:92)
02-11 15:21:13.471: E/AndroidRuntime(795): at android.os.Looper.loop(Looper.java:137)
02-11 15:21:13.471: E/AndroidRuntime(795): at android.app.ActivityThread.main(ActivityThread.java:5039)
02-11 15:21:13.471: E/AndroidRuntime(795): at java.lang.reflect.Method.invokeNative(Native Method)
02-11 15:21:13.471: E/AndroidRuntime(795): at java.lang.reflect.Method.invoke(Method.java:511)
02-11 15:21:13.471: E/AndroidRuntime(795): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-11 15:21:13.471: E/AndroidRuntime(795): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-11 15:21:13.471: E/AndroidRuntime(795): at dalvik.system.NativeStart.main(Native Method)

The spinner in MainActivity works, but the spinner in onSettings doesn't. What am I doing wrong, or is there a work around? Thanks.

Kateryna Grynko
Posts: 0
Joined: Thu Nov 15, 2012 9:13 am

android.view.WindowManager$BadTokenException

Hello, it's a bug, we will fix it in next release.

miker
Posts: 0
Joined: Sat Feb 09, 2013 9:40 pm

android.view.WindowManager$BadTokenException

Any timeframe for the next release? Thanks.

Kateryna Grynko
Posts: 0
Joined: Thu Nov 15, 2012 9:13 am

android.view.WindowManager$BadTokenException

This should be fixed now. Please re-build your APK and try again. Should be working.

Return to “Issues”