Android : Error AlertDialog in AsyncTask
<p>I would like to show an AlertDialog in AsyncTask but it gives an bad token exception.
The context is given by the constructor of AsyncTask.</p>

<pre><code>protected void onProgressUpdate(Object... obj) {
   AlertDialog alert;
   final CharSequence[] items = {"Run Chat", "Show Position", "Show Infos"};
   AlertDialog.Builder builder = new AlertDialog.Builder(context);
   builder.setTitle("Actions");
   builder.setItems(items, new DialogInterface.OnClickListener() {
   @Override
       public void onClick(DialogInterface arg0, int arg1) {
       // TODO Auto-generated method stub

       }

    });
     builder.show(); //it's give a bad token exception
}
</code></pre>

<p><strong>Log cat :</strong></p>

<pre><code>04-29 12:56:57.035: E/AndroidRuntime(1299): Uncaught handler: thread main exiting due to uncaught exception
04-29 12:56:57.045: E/AndroidRuntime(1299): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
04-29 12:56:57.045: E/AndroidRuntime(1299):     at android.view.ViewRoot.setView(ViewRoot.java:472)
04-29 12:56:57.045: E/AndroidRuntime(1299):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
04-29 12:56:57.045: E/AndroidRuntime(1299):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
04-29 12:56:57.045: E/AndroidRuntime(1299):     at android.app.Dialog.show(Dialog.java:239)
04-29 12:56:57.045: E/AndroidRuntime(1299):     at android.app.AlertDialog$Builder.show(AlertDialog.java:802)
04-29 12:56:57.045: E/AndroidRuntime(1299):     at fr.utbm.aiechat.TCPHandlerTask.onProgressUpdate(TCPHandlerTask.java:98)
04-29 12:56:57.045: E/AndroidRuntime(1299):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:432)
04-29 12:56:57.045: E/AndroidRuntime(1299):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-29 12:56:57.045: E/AndroidRuntime(1299):     at android.os.Looper.loop(Looper.java:123)
04-29 12:56:57.045: E/AndroidRuntime(1299):     at android.app.ActivityThread.main(ActivityThread.java:4363)
04-29 12:56:57.045: E/AndroidRuntime(1299):     at java.lang.reflect.Method.invokeNative(Native Method)
04-29 12:56:57.045: E/AndroidRuntime(1299):     at java.lang.reflect.Method.invoke(Method.java:521)
04-29 12:56:57.045: E/AndroidRuntime(1299):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
04-29 12:56:57.045: E/AndroidRuntime(1299):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
04-29 12:56:57.045: E/AndroidRuntime(1299):     at dalvik.system.NativeStart.main(Native Method)
</code></pre>

<p>Thank's for your answers.</p>

<pre><code>public class TCPHandlerTask extends AsyncTask&lt;Void, Object, Void&gt;
{
    private boolean done;
    private Network Net;
    private Context context;
    private ServerSocket SocketServer;
    public TCPHandlerTask(Context applicationContext) {
        // TODO Auto-generated constructor stub
        context = applicationContext;
    }

    @Override
    protected void onPreExecute()
    {
        done = false;
        Net = Network.getInstance();
        SocketServer = Net.getSocketServer();
    }

    public void stop()
    {
        done = true;
    }

    @Override
    protected Void doInBackground(Void... params)
    {
        while(!done)
        {
            try
            {
                Socket client = SocketServer.accept();
                InputStream is = client.getInputStream();
                ObjectInputStream dis = new ObjectInputStream(is);
                int idPacket = 0;
                idPacket = dis.readInt();
                switch(idPacket) {
                    case Packets.CHANJOIN_REQUEST : 
                        System.out.println("Paquet request join");

                        publishProgress(idPacket);
                    break;
                }
                client.close();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
        return null;
    }
    protected void onProgressUpdate(Object... obj)
    {
        int idProgress = (Integer) obj[0];
        switch(idProgress) {
            case Packets.CHANJOIN_REQUEST :
                AlertDialog alert;
                final CharSequence[] items = {"Lancer Chat", "Voir Position", "Voir Infos"};
                AlertDialog.Builder builder = new AlertDialog.Builder(context);
                builder.setTitle("Actions");
                builder.setItems(items, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface arg0, int arg1) {
                        // TODO Auto-generated method stub

                    }

                });
                builder.show();
                System.out.println("context4 = ");
            break;
        }
    }
}
</code></pre>
