Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid - basic download progress text
    primarykey
    data
    text
    <p>I found a snippet online for showing a download's progress. The error I'm getting is <code>android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.</code> My goal is to have the phone download a file and then when completed, switch to the chaptermenu intent</p> <pre><code>import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Environment; import android.widget.TextView; public class CheckDownload extends Activity { /** Called when the activity is first created. */ @Override protected void onCreate(Bundle SavedInstanceState) { // TODO Auto-generated method stub super.onCreate(SavedInstanceState); setContentView(R.layout.downloadscreen); Thread timer = new Thread() { public void run() { try { // set the download URL, a url that points to a file on the // internet // this is the file to be downloaded URL url = new URL( "http://www.android.com/media/wallpaper/gif/android_logo.gif"); // 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. File SDCardRoot = Environment.getExternalStorageDirectory(); // create a new file, specifying the path, and the filename // which we want to save the file as. File file = new File(SDCardRoot, "android_logo.gif"); // 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 int totalSize = urlConnection.getContentLength(); // variable to store total downloaded bytes int 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); } // close the output stream when done fileOutput.close(); // catch some possible errors... } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { Intent chapterMenuIntentObject = new Intent( "com.blah.blah.CHAPTERMENU"); startActivity(chapterMenuIntentObject); } } }; timer.start(); } public void updateProgress(int downloadedSize, int totalSize) { int percentage = downloadedSize / totalSize * 100; String stringy = "Download Progress: " + percentage + "%"; TextView textytext = (TextView) findViewById(R.id.downloadscreentextview); textytext.setText(stringy); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); finish(); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload