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());
}
}
}
}
Go to the webpage where you want to download a file. Touch and hold what you want to download, then tap Download link or Download image. To see all the files you've downloaded to your device, open the Downloads app.
Start a service. An Android component (service, receiver, activity) can trigger the execution of a service via the startService(intent) method. // use this to start and trigger a service Intent i= new Intent(context, MyService. class); // potentially add data to the intent i.
You could try calling startForeground. Check out this post for more information.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With