In this android programming source code example, we are going to download a file with IntentService in Android.
You can copy and adopt this source code example to your android project without reinventing the wheel.
Below is a step by step source code to download a file with IntentService in Android.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MapAndService.MapAndServiceActivity14"> <Button android:id="@+id/btnIntentService" android:layout_width="match_parent" android:layout_height="wrap_content" android:text = "Download With intentService" android:background="@color/colorAccent" android:textColor="#ffffff" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.ResultReceiver; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MapAndServiceActivity14 extends AppCompatActivity { private Button btnIntentService; private ServiceResultReceiver serviceResultReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map_and_service14); btnIntentService = (Button)findViewById(R.id.btnIntentService); btnIntentService.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { serviceResultReceiver = new ServiceResultReceiver(new Handler()); String url = "https://inducesmile.com/wp-content/uploads/2019/01/inducesmilelog.png"; Intent intent = new Intent(MapAndServiceActivity14.this, Service14.class); intent.putExtra("receiver", serviceResultReceiver); intent.putExtra("url", url); startService(intent); } }); } class ServiceResultReceiver extends ResultReceiver { public ServiceResultReceiver(Handler handler) { super(handler); } @Override protected void onReceiveResult(int resultCode, Bundle resultData) { switch (resultCode){ case Service14.DOWNLOAD_SUCCESS: String file_path = resultData.getString("file_path"); Toast.makeText(getApplicationContext(), "image downloaded via IntentService is successfully", Toast.LENGTH_SHORT).show(); break; } super.onReceiveResult(resultCode, resultData); } } }
Service14.java
import android.app.IntentService; import android.content.Intent; import android.os.Bundle; import android.os.Environment; import android.os.ResultReceiver; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; public class Service14 extends IntentService { public static final int DOWNLOAD_SUCCESS=11; public Service14(){ super(Service14.class.getName()); } @Override protected void onHandleIntent(Intent intent) { String path = intent.getStringExtra("url"); final ResultReceiver receiver = intent.getParcelableExtra("receiver"); Bundle bundle=new Bundle(); try{ File outputFile = new File(Environment.getExternalStorageDirectory(), "inducesmile.png"); URL url = new URL(path); URLConnection urlConnection = url.openConnection(); urlConnection.connect(); FileOutputStream fos = new FileOutputStream(outputFile); InputStream inputStream = urlConnection.getInputStream(); byte[] buffer = new byte[1024]; int len1 = 0; while ((len1 = inputStream.read(buffer))>0){ fos.write(buffer, 0, len1); } fos.close(); inputStream.close(); String file_path = outputFile.getPath(); bundle.putString("file_path",file_path); receiver.send(DOWNLOAD_SUCCESS,bundle); }catch (Exception e){ e.printStackTrace(); } } }
AndroidManifest.xml
<service android:name=".MapAndService.Service14" />

If you have any question or suggestions kindly use the comment box or you can contact us directly through our contact page below.