How download file with service in android?

12,731

You could try calling startForeground. Check out this post for more information.

Share:
12,731
Musagil
Author by

Musagil

Updated on June 18, 2022

Comments

  • Musagil
    Musagil over 1 year

    I want download a file from internet with service. I found the source code and the code worked well. But i have a problem when i back from app the download are stopping or when i clear RAM, it also are stopping. So that i want found downloading code such as Google Play, which never stop when clear RAM, or app history. This is my source code:

    public class Temp extends IntentService {
    public static final int UPDATE_PROGRESS = 8344;
    private int lastupdate=0;
    private NotificationManager nm;
    private Builder mBuilder;
    public Temp() {
    
        super("Temp");
    
    
    }
    
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d("SERVICE-ONCOMMAND", "onStartCommand");
        return START_STICKY;
     }
    
    @Override
    protected void onHandleIntent(Intent intent) {
        Log.e("ok","ok");
        nm = (NotificationManager)  getSystemService(NOTIFICATION_SERVICE);
        mBuilder = new NotificationCompat.Builder(this);
        mBuilder.setContentTitle(
                "Picture Download dnsadg sadgasjdgashgd asgd asjdg asjgd sajgd s")
                .setContentText("Download in progress")
                .setSmallIcon(R.drawable.icon_app).setContentInfo("0%");
    
        mBuilder.setOngoing(true);  
        File root = new File(Environment.getExternalStorageDirectory()
                + "/aaaa");
        String urlToDownload = "http://dl2.mid.az/endir.php?file=uploads/Exclusive/miri_yusif_-_yoxam_men_mp3.mid.az.mp3";
       // ResultReceiver receiver = (ResultReceiver) intent.getParcelableExtra("receiver");
        try {
            URL url = new URL(urlToDownload);
            URLConnection connection = url.openConnection();
            connection.connect();
            // this will be useful so that you can show a typical 0-100% progress bar
            int fileLength = connection.getContentLength();
    
            // download the file
            InputStream input = new BufferedInputStream(url.openStream());
            OutputStream output = new FileOutputStream(new File(root.getPath(),
                    "ok.mp3"));
    
            byte data[] = new byte[1024];
            long total = 0;
            int count;
            while ((count = input.read(data)) != -1) {
                total += count;
    
                progressChange((int)(total * 100) / fileLength);
                // publishing the progress....
             //   Bundle resultData = new Bundle();
             //   resultData.putInt("progress" ,(int) (total * 100 / fileLength));
             //   receiver.send(UPDATE_PROGRESS, resultData);
                output.write(data, 0, count);
            }
    
            output.flush();
            output.close();
            input.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    
       // Bundle resultData = new Bundle();
      //  resultData.putInt("progress" ,100);
      //  receiver.send(UPDATE_PROGRESS, resultData);
    }
    
    @Override
    public void onDestroy() {
        Log.e("DESTROY", "DESTROY");
        super.onDestroy();
    }
    void progressChange(int progress){
    
    
        if (lastupdate != progress) {
            lastupdate = progress;
            // not.contentView.setProgressBar(R.id.status_progress,
            // 100,Integer.valueOf(progress[0]), false);
            // inform the progress bar of updates in progress
            // nm.notify(42, not);
            if (progress < 100) {
                mBuilder.setProgress(100, Integer.valueOf(progress),
                        false).setContentInfo(progress+"%");
                nm.notify(12, mBuilder.build());
                   Intent i = new Intent("com.russian.apps.TabActivity").putExtra("some_msg",progress+"%");
                    this.sendBroadcast(i);
            } else {
                mBuilder.setContentText("Download complete")
                // Removes the progress bar
                        .setProgress(0, 0, false).setOngoing(false).setContentInfo("");;
    
                nm.notify(12, mBuilder.build());
    
            }
    
        }
    
    }
    }