Greetings all,

I have searched high & low and have not come up with the answer to
this, so please forgive me if I’ve missed something – I’m cross-eyed
at this point.

I’m new to Android, but doing pretty well so far.  I’m having a
problem displaying an AlertDialog inside of a thread.  No matter what
I try, it crashes.  If I use this code in the "onCreate" sub, it
works.  The problem code is inside the “public void run()” section.
If I take out all the code relating to the AlertDialog, the error goes
away.   I understand that I’m supposed to create the dialog using the
context of the Activity, and I thought my code does that – but
obviously I’ve missed something.  If someone could explain to me what
I’m doing wrong, I would be eternally grateful.

I’ve had to remove a few items from the code for privacy reasons, they
mention my company name and the product I’m developing, etc etc.

Here’s the code:

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

package com.[removed for privacy].[removed for privacy];

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.telephony.TelephonyManager;
import android.view.Menu;
import android.view.MenuItem;

public class Init extends Activity implements Runnable {

       public String DROIDPHONENUMBER;
       public String HTTP_RESULT;
       public int MINUTESLEFT;
       public ProgressDialog pd;

       private String getMyPhoneNumber() {
              TelephonyManager mTelephonyMgr =
(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
              return mTelephonyMgr.getLine1Number();
       }

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.init);
        DROIDPHONENUMBER = getMyPhoneNumber();
        pd = ProgressDialog.show(this, "Test Title", "Test Message…",
true, false);
   Thread getBalanceThread = new Thread(this);
        getBalanceThread.start();
    }

    public String getUrlData(String url) {
        String websiteData = null;
        try {
              DefaultHttpClient client = new DefaultHttpClient();
              URI uri = new URI(url);
            HttpGet method = new HttpGet(uri);
            HttpResponse res = client.execute(method);
            InputStream data = res.getEntity().getContent();
            websiteData = generateString(data);
        }
        catch (ClientProtocolException e) {
              e.printStackTrace();
        }
 catch (IOException e) {
              e.printStackTrace();
        }
        catch (URISyntaxException e) {
              e.printStackTrace();
        }
        return websiteData;
    }

    public String generateString(InputStream stream) {
       InputStreamReader reader = new InputStreamReader(stream);
       BufferedReader buffer = new BufferedReader(reader);
       StringBuilder sb = new StringBuilder();
       try {
              String cur;
              while ((cur = buffer.readLine()) != null) {
                     sb.append(cur);
              }
              }
              catch (IOException e) {
                     e.printStackTrace();
              }
              try {
                     stream.close();
              } catch (IOException e) {
                     e.printStackTrace();
              }
              return sb.toString();
       }

       /** MENU FUNCTIONS **/
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
              menu.add("Close");
              return true;
    }

    public boolean onOptionsItemSelected(MenuItem item) {
       if (item.getTitle() == "Close") {
              finish();
       }
       return true;
    }

       public void run() {
              HTTP_RESULT = getUrlData("https://[url removed for
privacy]" + DROIDPHONENUMBER);
              AlertDialog.Builder builder = new
AlertDialog.Builder(Init.this);
              builder.setTitle("Test Title");
       builder.setMessage(HTTP_RESULT);
              builder.setPositiveButton("OK", new
DialogInterface.OnClickListener() {
              public void onClick(DialogInterface dialog, int which) {
                     return;
                     }
       });
       AlertDialog dialog = builder.create();
       dialog.setOwnerActivity(Init.this);
       dialog.show();

              handler.sendEmptyMessage(0);
       }

       private Handler handler = new Handler() {
            public void handleMessage(Message msg) {
                    pd.dismiss();
            }
    };
}

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to