How download file with service in android?
12,731
You could try calling startForeground. Check out this post for more information.
Author by
Musagil
Updated on June 18, 2022Comments
-
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()); } } } }