title: Update my progress bar and text in status bar w/ AsyncTask
body: <p>I have asynctask which downloads an mp3 and I have a custom expanded notification in the status bar with a progress bar and a textview. The problem is I cannot get them to update. Here is my attempt, what am I doing wrong?</p>
  
  <pre><code> public class DownloadFile extends AsyncTask&lt;Void, Integer, String&gt; {                       
      /*public WebRequest(Context context, 
              String ProgressTitle, String ProgressMessage) {
          this._context = context;
  
          this._title = ProgressTitle;
          this._message = ProgressMessage;
      }*/
      ProgressBar progressBar;
      private int progress = 0;
      NotificationManager notificationManager;
      Notification notification2;
      private static final int PROGRESS = 0x1;
      private static final int MAX_PROGRESS = 100;
      int downloadedSize;
      int totalSize;
  
  
  
      @Override
      protected void onPreExecute() {
          /*SDCardRoot = Environment.getExternalStorageDirectory() + "/download/";
          Intent in = new Intent(mainmenu.this, DownloadService.class);
          in.putExtra("url", SDCardRoot);
          in.putExtra("songname", filename3);
          startService(in);*/
  
          // get the layout
          //setContentView(R.layout.download_progress);
  
          // configure the intent
          Intent intent = new Intent();
          final PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);
  
          // configure the notification
          notification2 = new Notification(R.drawable.download, "DOWNLOADING: " + filename3, System
                  .currentTimeMillis());
          notification2.flags = notification2.flags | Notification.FLAG_ONGOING_EVENT;
          notification2.contentView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.download_progress);
          notification2.contentIntent = pendingIntent;
          notification2.contentView.setTextViewText(R.id.percentage,"hi" );
          notification2.contentView.setTextViewText(R.id.status_text, "DOWNLOADING: " + filename3);
          notification2.contentView.setProgressBar(R.id.status_progress, 100, progress, false);
  
          getApplicationContext();
          notificationManager = (NotificationManager) getApplicationContext().getSystemService(
                  Context.NOTIFICATION_SERVICE);
  
          notificationManager.notify(2, notification2);
  
  
      }
  
      @Override
      protected String doInBackground(Void... params) {
          // TODO Auto-generated method stub
  
          try {
  
              //set the download URL, a url that points to a file on the internet
              //this is the file to be downloaded
              URL url = songURL2;
  
  
              //create the new connection
              HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
  
              //set up some things on the connection
              urlConnection.setRequestMethod("GET");
              urlConnection.setDoOutput(true);
  
              //and connect!
              urlConnection.connect();
  
              //set the path where we want to save the file
              //in this case, going to save it on the root directory of the
              //sd card.
              SDCardRoot = Environment.getExternalStorageDirectory() + "/download/";
              //create a new file, specifying the path, and the filename
              //which we want to save the file as.
              File file = new File(SDCardRoot,filename3);
  
              //this will be used to write the downloaded data into the file we created
              FileOutputStream fileOutput = new FileOutputStream(file);
  
              //this will be used in reading the data from the internet
              InputStream inputStream = urlConnection.getInputStream();
  
              //this is the total size of the file
              Integer totalSize = urlConnection.getContentLength();
              //variable to store total downloaded bytes
              Integer downloadedSize = 0;
  
              //create a buffer...
              byte[] buffer = new byte[1024];
              int bufferLength = 0; //used to store a temporary size of the buffer
  
              //now, read through the input buffer and write the contents to the file
              while ( (bufferLength = inputStream.read(buffer)) &gt; 0 ) {
                      //add the data in the buffer to the file in the file output stream (the     file on the sd card
                      fileOutput.write(buffer, 0, bufferLength);
                      //add up the size so we know how much is downloaded
                      downloadedSize += bufferLength;
                      //this is where you would do something to report the prgress, like this maybe
                      //updateProgress(downloadedSize, totalSize);
                      publishProgress(downloadedSize/totalSize);
  
  
              }
              //close the output stream when done
              fileOutput.close();
  
             return "Success";
  
  
  
      //catch some possible errors...
      } catch (MalformedURLException e) {             
              e.printStackTrace();
          return "Failed";
      } catch (IOException e) {               
              e.printStackTrace();
                 return "Failed";
      }
  }               
  
      protected void onProgressUpdate(Integer... progress) {
  
          notification2.contentView.setProgressBar(R.id.status_progress, 100, progress[0], false);
          String stringy = progress + "%";
          TextView textytext = (TextView) findViewById(R.id.percentage);
          textytext.setText(stringy);
          notificationManager.notify(2, notification2);           
      }
  
      @Override
      protected void onPostExecute(String result) {
          // TODO Auto-generated method stub                  
          notificationManager.cancel(2);          
      }
  }       
  </code></pre>
  
  <p>}</p>