Android : AsyncTask, how can update ProgressDialog increment
Asked Answered
C

1

6

I want to parse a webpage and visual a progressdialog style horizontal and increment it byte to byte, it's possibile ?

Compote answered 28/9, 2011 at 22:47 Comment(5)
Yes, it is possible goo.gl/eeiu5Tael
Refer this example link: sites.google.com/site/androidhowto/how-to-1/…Cyclotron
Thank you for your answer. And if I want to import from url and php page 5000 records from mysql db, can I calculate the JSONArray in bytes ? How can I apply this code in that case ? ThanksCompote
Try to this function :- getJSONArray public JSONArray getJSONArray(int index) throws JSONException Get the JSONArray associated with an index. Parameters: index - The index must be between 0 and length() - 1. Returns: A JSONArray value. Throws: JSONException - If there is no value for the index. or if the value is not a JSONArray and last follow this linkCyclotron
but with this code I can to know the JSONArray dimension in bytes ?Compote
S
20

Try something like this,

Create a ProgressDialog.

ProgressDialog mProgressDialog = new ProgressDialog(Your_Activity.this);
mProgressDialog.setMessage("Here you can set a message");
mProgressDialog.setIndeterminate(false);
mProgressDialog.setMax(100);
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.show();
MyAsyncTask obj = new MyAsyncTask ();
obj.execute("url");

Your AsyncTask Class.

private class MyAsyncTask extends AsyncTask<String, Integer, String>{
    @Override
    protected String doInBackground(String... url) {
        int count;
        try {
            URL url = new URL(url[0]);
            URLConnection connection = url.openConnection();
            connection.connect();
            // this will be useful so that you can show a tipical 0-100% progress bar
            int length = connection.getContentLength();

            // downlod the file
            InputStream input = new BufferedInputStream(url.openStream());
            OutputStream output = new FileOutputStream("/sdcard/file_name.txt");

            byte data[] = new byte[1024];

            long total = 0;

            while ((count = input.read(data)) != -1) {
                total += count;
                // publishing the progress....
                publishProgress((int)(total*100/length));
                output.write(data, 0, count);
            }
            output.flush();
            output.close();
            input.close();
        } catch (Exception e) {}
        return null;
    }
    @Override
    public void onProgressUpdate(String... args){
        mProgressDialog.setProgress(args[0]);
     }
  }
}

You have to give these Permission's in the AndroidManifest file.

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Suhail answered 29/9, 2011 at 4:58 Comment(1)
In some URL you will always get -1 ,then use this code HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("HEAD"); connection.connect(); int length = connection.getContentLength();Blastomere

© 2022 - 2024 — McMap. All rights reserved.