Nikunj Patel
Nikunj Patel

Reputation: 22066

issue in Download file

i have develop applicatin in which i need to download file from url and i have tried following code but i got 0 byte when i shown detail.

Code::

package com.playmusic;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;


public class playmusic extends Activity {

 private static String fileName = "shanesh.mp3";

 @Override
 public void onCreate(Bundle savedInstanceState) 
 {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    try {
        URL url = new URL("URl");
        HttpURLConnection c = (HttpURLConnection) url.openConnection();
        c.setRequestMethod("GET");
        c.setDoOutput(true);
        c.connect();

        String PATH = Environment.getExternalStorageDirectory()
                + "/download/";
        Log.v("log_tag", "PATH: " + PATH);
        File file = new File(PATH);
        file.mkdirs();
        File outputFile = new File(file, fileName);
        FileOutputStream fos = new FileOutputStream(outputFile);

        InputStream is = c.getInputStream();

        byte[] buffer = new byte[1024];
        int len1 = 0;
        while ((len1 = is.read(buffer)) != -1) {
            fos.write(buffer, 0, len1);
        }
        fos.close();
        is.close();
    } catch (IOException e) {
        Log.d("log_tag", "Error: " + e);
    }
    Log.v("log_tag", "Check: ");
} }

Manifest :

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

Upvotes: 2

Views: 331

Answers (4)

user4574256
user4574256

Reputation:

this is simple code to download any file like image,audio,video etc

Button start;
    //String HttpMyUrl="http://am.cdnmob.org/_/img/loader-small.gif";
    String HttpMyUrl="http://ringtones.mob.org/ringtone/RIusrm-7xATkRQlLw1o89w/1424909358/fa1b23bb5e35c8aed96b1a5aba43df3d/stefano_gambarelli_feat_pochill-land_on_mars_v2.mp3";
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       start= (Button) findViewById(R.id.startBtn);
        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                DownloadManager.Request request = new DownloadManager.Request(Uri.parse(HttpMyUrl));
                request.setTitle("File Download");
                request.setDescription("File is being Downloaded...");
                request.allowScanningByMediaScanner();
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
                String fileName = URLUtil.guessFileName(HttpMyUrl,null, MimeTypeMap.getFileExtensionFromUrl(HttpMyUrl));
                request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,fileName);
                DownloadManager manager =(DownloadManager) getApplication().getSystemService(Context.DOWNLOAD_SERVICE);
                manager.enqueue(request);
            }


        });

Give the permission

Upvotes: 1

Naveen R
Naveen R

Reputation: 55

Try this :

        int count;

    try {
            URL url = new URL("URl");
            HttpURLConnection c = (HttpURLConnection) url.openConnection();
            c.setRequestMethod("GET");
            c.setDoOutput(true);
            c.connect();



            String PATH = Environment.getExternalStorageDirectory()
                    + "/altered/";
            Log.v("log_tag", "PATH: " + PATH);
            File file = new File(PATH);
                if (!file.exists()) {
                file.mkdirs();
                 }
            File outputFile = new File(file,name);
            FileOutputStream fos = new FileOutputStream(outputFile);


            // getting file length
            int lenghtOfFile = c.getContentLength();

            InputStream is = c.getInputStream();

            byte buffer[] = new byte[1024];

            long total = 0;

            while ((count = is.read(buffer)) != -1) {

                total += count;

                // publishing the progress....
                // After this onProgressUpdate will be called
                publishProgress("" + (int) ((total * 100) / lenghtOfFile));

                fos.write(buffer);

            }
            fos.close();
            is.close();
        } catch (IOException e) {
            Log.e("log_tag", "Error: " + e);
        }

Upvotes: 0

Jayabal
Jayabal

Reputation: 3619

do as follows.

    HttpClient httpclient = new DefaultHttpClient();

    HttpGet httpget = new HttpGet("http://www.mysite.com/file.txt");



    try {

        // Execute HTTP Get Request

        HttpResponse response = httpclient.execute(httpget);

        HttpEntity entity = response.getEntity();



        printAsString(entity.getContent()));



    } catch (IOException e) {

        Log.e(TAG, "There was an IO Stream related error", e);

    }





private void printAsString(InputStream is) {

    BufferedReader reader = new BufferedReader(new InputStreamReader(is));

    StringBuilder builder = new StringBuilder();

    String line;



    try {

        while ((line = reader.readLine()) != null) {

            Syso(line);

        }

    } catch (IOException e) {

        Log.d(TAG, "Error while converting input stream to string");

    }

    is.close();

}

Upvotes: 0

blessanm86
blessanm86

Reputation: 31779

This is the code I use to download a file. Try this

DefaultHttpClient http = new DefaultHttpClient();
HttpGet method = new HttpGet(YOUR URL);
HttpResponse res = http.execute(method);
InputStream responseStream = res.getEntity().getContent();

Here I use the GET method and append the parameters to the URL.

Upvotes: 0

Related Questions